Skip to content

Commit

Permalink
more, maybe a bit heavy handed
Browse files Browse the repository at this point in the history
  • Loading branch information
mavaylon1 committed Oct 24, 2024
1 parent c2a298f commit 146f7e4
Show file tree
Hide file tree
Showing 5 changed files with 3 additions and 153 deletions.
24 changes: 1 addition & 23 deletions src/hdmf/__init__.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,10 @@
from . import query
from .backends.hdf5.h5_utils import H5Dataset, H5RegionSlicer
from .backends.hdf5.h5_utils import H5Dataset
from .container import Container, Data, DataRegion, HERDManager
from .region import ListSlicer
from .utils import docval, getargs
from .term_set import TermSet, TermSetWrapper, TypeConfigurator


@docval(
{"name": "dataset", "type": None, "doc": "the HDF5 dataset to slice"},
{"name": "region", "type": None, "doc": "the region reference to use to slice"},
is_method=False,
)
def get_region_slicer(**kwargs):
import warnings # noqa: E402

warnings.warn(
"get_region_slicer is deprecated and will be removed in HDMF 3.0.",
DeprecationWarning,
)

dataset, region = getargs("dataset", "region", kwargs)
if isinstance(dataset, (list, tuple, Data)):
return ListSlicer(dataset, region)
elif isinstance(dataset, H5Dataset):
return H5RegionSlicer(dataset, region)
return None


try:
# see https://effigies.gitlab.io/posts/python-packaging-2023/
from ._version import __version__
Expand Down
2 changes: 1 addition & 1 deletion src/hdmf/backends/hdf5/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from . import h5_utils, h5tools
from .h5_utils import H5RegionSlicer, H5DataIO
from .h5_utils import H5DataIO
from .h5tools import HDF5IO, H5SpecWriter, H5SpecReader
23 changes: 0 additions & 23 deletions src/hdmf/backends/hdf5/h5_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from ...array import Array
from ...data_utils import DataIO, AbstractDataChunkIterator, append_data
from ...query import HDMFDataset, ReferenceResolver, ContainerResolver, BuilderResolver
from ...region import RegionSlicer
from ...spec import SpecWriter, SpecReader
from ...utils import docval, getargs, popargs, get_docval, get_data_shape

Expand Down Expand Up @@ -420,28 +419,6 @@ def read_namespace(self, ns_path):
return ret


class H5RegionSlicer(RegionSlicer):

@docval({'name': 'dataset', 'type': (Dataset, H5Dataset), 'doc': 'the HDF5 dataset to slice'},
{'name': 'region', 'type': RegionReference, 'doc': 'the region reference to use to slice'})
def __init__(self, **kwargs):
self.__dataset = getargs('dataset', kwargs)
self.__regref = getargs('region', kwargs)
self.__len = self.__dataset.regionref.selection(self.__regref)[0]
self.__region = None

def __read_region(self):
if self.__region is None:
self.__region = self.__dataset[self.__regref]

def __getitem__(self, idx):
self.__read_region()
return self.__region[idx]

def __len__(self):
return self.__len


class H5DataIO(DataIO):
"""
Wrap data arrays for write via HDF5IO to customize I/O behavior, such as compression and chunking
Expand Down
16 changes: 1 addition & 15 deletions src/hdmf/build/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ def __deepcopy__(self, memo):
# needing this argument in deepcopy. Doesn't hurt anything, though.
return self.__copy__()

def copy_mappers(self, type_map): # pragma: no cover
def copy_mappers(self, type_map):
for namespace in self.__ns_catalog.namespaces:
if namespace not in type_map.__container_types:
continue
Expand Down Expand Up @@ -490,20 +490,6 @@ def load_namespaces(self, **kwargs):
self.register_container_type(new_ns, dt, container_cls)
return deps

@docval({"name": "namespace", "type": str, "doc": "the namespace containing the data_type"},
{"name": "data_type", "type": str, "doc": "the data type to create a AbstractContainer class for"},
{"name": "autogen", "type": bool, "doc": "autogenerate class if one does not exist", "default": True},
returns='the class for the given namespace and data_type', rtype=type)
def get_container_cls(self, **kwargs):
"""Get the container class from data type specification.
If no class has been associated with the ``data_type`` from ``namespace``, a class will be dynamically
created and returned.
"""
# NOTE: this internally used function get_container_cls will be removed in favor of get_dt_container_cls
# Deprecated: Will be removed by HDMF 4.0
namespace, data_type, autogen = getargs('namespace', 'data_type', 'autogen', kwargs)
return self.get_dt_container_cls(data_type, namespace, autogen)

@docval({"name": "data_type", "type": str, "doc": "the data type to create a AbstractContainer class for"},
{"name": "namespace", "type": str, "doc": "the namespace containing the data_type", "default": None},
{'name': 'post_init_method', 'type': Callable, 'default': None,
Expand Down
91 changes: 0 additions & 91 deletions src/hdmf/region.py

This file was deleted.

0 comments on commit 146f7e4

Please sign in to comment.