116 lines
3.6 KiB
Python
116 lines
3.6 KiB
Python
# 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 is the h5py package, a Python interface to the HDF5
|
|
scientific data format.
|
|
"""
|
|
|
|
from warnings import warn as _warn
|
|
import atexit
|
|
|
|
|
|
# --- Library setup -----------------------------------------------------------
|
|
|
|
# When importing from the root of the unpacked tarball or git checkout,
|
|
# Python sees the "h5py" source directory and tries to load it, which fails.
|
|
# We tried working around this by using "package_dir" but that breaks Cython.
|
|
try:
|
|
from . import _errors
|
|
except ImportError:
|
|
import os.path as _op
|
|
if _op.exists(_op.join(_op.dirname(__file__), '..', 'setup.py')):
|
|
raise ImportError("You cannot import h5py from inside the install directory.\nChange to another directory first.")
|
|
else:
|
|
raise
|
|
|
|
from . import version
|
|
|
|
if version.hdf5_version_tuple != version.hdf5_built_version_tuple:
|
|
_warn(("h5py is running against HDF5 {0} when it was built against {1}, "
|
|
"this may cause problems").format(
|
|
'{0}.{1}.{2}'.format(*version.hdf5_version_tuple),
|
|
'{0}.{1}.{2}'.format(*version.hdf5_built_version_tuple)
|
|
))
|
|
|
|
|
|
_errors.silence_errors()
|
|
|
|
from ._conv import register_converters as _register_converters, \
|
|
unregister_converters as _unregister_converters
|
|
_register_converters()
|
|
atexit.register(_unregister_converters)
|
|
|
|
from .h5z import _register_lzf
|
|
_register_lzf()
|
|
|
|
|
|
# --- Public API --------------------------------------------------------------
|
|
|
|
from . import h5a, h5d, h5ds, h5f, h5fd, h5g, h5r, h5s, h5t, h5p, h5z, h5pl
|
|
|
|
from ._hl import filters
|
|
from ._hl.base import is_hdf5, HLObject, Empty
|
|
from ._hl.files import (
|
|
File,
|
|
register_driver,
|
|
unregister_driver,
|
|
registered_drivers,
|
|
)
|
|
from ._hl.group import Group, SoftLink, ExternalLink, HardLink
|
|
from ._hl.dataset import Dataset
|
|
from ._hl.datatype import Datatype
|
|
from ._hl.attrs import AttributeManager
|
|
from ._hl.vds import VirtualSource, VirtualLayout
|
|
|
|
from ._selector import MultiBlockSlice
|
|
from .h5 import get_config
|
|
from .h5r import Reference, RegionReference
|
|
from .h5t import (special_dtype, check_dtype,
|
|
vlen_dtype, string_dtype, enum_dtype, ref_dtype, regionref_dtype,
|
|
opaque_dtype,
|
|
check_vlen_dtype, check_string_dtype, check_enum_dtype, check_ref_dtype,
|
|
check_opaque_dtype,
|
|
)
|
|
from .h5s import UNLIMITED
|
|
|
|
from .version import version as __version__
|
|
|
|
|
|
def run_tests(args=''):
|
|
"""Run tests with pytest and returns the exit status as an int.
|
|
"""
|
|
# Lazy-loading of tests package to avoid strong dependency on test
|
|
# requirements, e.g. pytest
|
|
from .tests import run_tests
|
|
return run_tests(args)
|
|
|
|
|
|
def enable_ipython_completer():
|
|
""" Call this from an interactive IPython session to enable tab-completion
|
|
of group and attribute names.
|
|
"""
|
|
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')
|