From c656e5ab98d6a371c3e17b311b829f0d03e90d28 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Tue, 4 Apr 2023 10:53:20 -0700 Subject: [PATCH 01/23] NWBHDF5IO ER and ER_Manager --- src/pynwb/__init__.py | 18 +++++++++++++----- src/pynwb/file.py | 3 ++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index a5d3bdfc7..94f901904 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -13,6 +13,7 @@ from hdmf.backends.hdf5 import HDF5IO as _HDF5IO from hdmf.build import BuildManager, TypeMap import hdmf.common +from hdmf.common.resources import ExternalResources CORE_NAMESPACE = 'core' __core_ns_file_name = 'nwb.namespace.yaml' @@ -207,10 +208,12 @@ class NWBHDF5IO(_HDF5IO): {'name': 'file', 'type': [h5py.File, 'S3File'], 'doc': 'a pre-existing h5py.File object', 'default': None}, {'name': 'comm', 'type': "Intracomm", 'doc': 'the MPI communicator to use for parallel I/O', 'default': None}, - {'name': 'driver', 'type': str, 'doc': 'driver for h5py to use when opening HDF5 file', 'default': None}) + {'name': 'driver', 'type': str, 'doc': 'driver for h5py to use when opening HDF5 file', 'default': None}, + {'name': 'external_resources', 'type': ExternalResources, 'doc': 'The external resources associated with the file.', 'default': None},) def __init__(self, **kwargs): - path, mode, manager, extensions, load_namespaces, file_obj, comm, driver =\ - popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', 'file', 'comm', 'driver', kwargs) + path, mode, manager, extensions, load_namespaces, file_obj, comm, driver, external_resources =\ + popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', 'file', 'comm', 'driver', 'external_resources', kwargs) + self.external_resources = external_resources # Define the BuildManager to use if load_namespaces: if manager is not None: @@ -240,7 +243,7 @@ def __init__(self, **kwargs): manager = get_manager() # Open the file super().__init__(path, manager=manager, mode=mode, file=file_obj, comm=comm, driver=driver) - + @property def nwb_version(self): """ @@ -284,7 +287,12 @@ def read(self, **kwargs): raise TypeError("NWB version %s not supported. PyNWB supports NWB files version 2 and above." % str(file_version_str)) # read the file - return super().read(**kwargs) + if self.external_resources is not None: + file = super().read(**kwargs) + file.set_er(self.external_resources) + return file + else: + return super().read(**kwargs) @docval({'name': 'src_io', 'type': HDMFIO, 'doc': 'the HDMFIO object (such as NWBHDF5IO) that was used to read the data to export'}, diff --git a/src/pynwb/file.py b/src/pynwb/file.py index 31b2d8e1e..5cc1ae214 100644 --- a/src/pynwb/file.py +++ b/src/pynwb/file.py @@ -8,6 +8,7 @@ import pandas as pd from hdmf.common import DynamicTableRegion, DynamicTable +from hdmf.common.resources import ExternalResourcesManager from hdmf.utils import docval, getargs, get_docval, popargs, popargs_to_dict, AllowPositional from . import register_class, CORE_NAMESPACE @@ -149,7 +150,7 @@ def __init__(self, **kwargs): @register_class('NWBFile', CORE_NAMESPACE) -class NWBFile(MultiContainerInterface): +class NWBFile(MultiContainerInterface, ExternalResourcesManager): """ A representation of an NWB file. """ From 678dfd11ccfe5c92f2c00b20c5feff409a490451 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Thu, 6 Apr 2023 15:59:31 -0700 Subject: [PATCH 02/23] manager --- src/pynwb/__init__.py | 4 ++-- src/pynwb/file.py | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index 94f901904..96d1b486e 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -243,7 +243,7 @@ def __init__(self, **kwargs): manager = get_manager() # Open the file super().__init__(path, manager=manager, mode=mode, file=file_obj, comm=comm, driver=driver) - + @property def nwb_version(self): """ @@ -343,7 +343,7 @@ def export(self, **kwargs): from . import io as __io # noqa: F401,E402 from .core import NWBContainer, NWBData # noqa: F401,E402 from .base import TimeSeries, ProcessingModule # noqa: F401,E402 -from .file import NWBFile # noqa: F401,E402 +from .file import NWBFile # noqa: F401,E402 from . import behavior # noqa: F401,E402 from . import device # noqa: F401,E402 diff --git a/src/pynwb/file.py b/src/pynwb/file.py index 5cc1ae214..e722dcc45 100644 --- a/src/pynwb/file.py +++ b/src/pynwb/file.py @@ -8,7 +8,7 @@ import pandas as pd from hdmf.common import DynamicTableRegion, DynamicTable -from hdmf.common.resources import ExternalResourcesManager +from hdmf.container import ExternalResourcesManager from hdmf.utils import docval, getargs, get_docval, popargs, popargs_to_dict, AllowPositional from . import register_class, CORE_NAMESPACE @@ -148,6 +148,9 @@ def __init__(self, **kwargs): for key, val in args_to_set.items(): setattr(self, key, val) +# class NWBExternalResourcesManager(ExternalResourcesManager): +# def __init__(self): +# super().__init__() @register_class('NWBFile', CORE_NAMESPACE) class NWBFile(MultiContainerInterface, ExternalResourcesManager): From 129f1457703f441c04192d1f95caabf40168c3f5 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Thu, 6 Apr 2023 20:43:55 -0700 Subject: [PATCH 03/23] set_er name --- src/pynwb/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index 96d1b486e..7a540b11c 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -289,7 +289,7 @@ def read(self, **kwargs): # read the file if self.external_resources is not None: file = super().read(**kwargs) - file.set_er(self.external_resources) + file.set_external_resources(self.external_resources) return file else: return super().read(**kwargs) From c8f86115c9e14e707836be0d4ff8ca734f3d9783 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Tue, 18 Apr 2023 07:30:46 -0700 Subject: [PATCH 04/23] updates --- src/pynwb/__init__.py | 8 ++++++-- src/pynwb/resources.py | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 src/pynwb/resources.py diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index 7a540b11c..cfaafe2b3 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -209,7 +209,9 @@ class NWBHDF5IO(_HDF5IO): {'name': 'comm', 'type': "Intracomm", 'doc': 'the MPI communicator to use for parallel I/O', 'default': None}, {'name': 'driver', 'type': str, 'doc': 'driver for h5py to use when opening HDF5 file', 'default': None}, - {'name': 'external_resources', 'type': ExternalResources, 'doc': 'The external resources associated with the file.', 'default': None},) + {'name': 'external_resources', 'type': str, + 'doc': 'The path to the ExternalResources', + 'default': None},) def __init__(self, **kwargs): path, mode, manager, extensions, load_namespaces, file_obj, comm, driver, external_resources =\ popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', 'file', 'comm', 'driver', 'external_resources', kwargs) @@ -289,7 +291,8 @@ def read(self, **kwargs): # read the file if self.external_resources is not None: file = super().read(**kwargs) - file.set_external_resources(self.external_resources) + er_read=ExternalResources.from_flat_tsv(path=self.external_resources) + file.link_resources(er_read) return file else: return super().read(**kwargs) @@ -344,6 +347,7 @@ def export(self, **kwargs): from .core import NWBContainer, NWBData # noqa: F401,E402 from .base import TimeSeries, ProcessingModule # noqa: F401,E402 from .file import NWBFile # noqa: F401,E402 +from .resources import ExternalResources from . import behavior # noqa: F401,E402 from . import device # noqa: F401,E402 diff --git a/src/pynwb/resources.py b/src/pynwb/resources.py new file mode 100644 index 000000000..915d1c5ee --- /dev/null +++ b/src/pynwb/resources.py @@ -0,0 +1,10 @@ +from hdmf.common import ExternalResources as hdmf_ExternalResources +from . import get_type_map as tm +from . import register_class, CORE_NAMESPACE +from hdmf.utils import docval, get_docval + +class ExternalResources(hdmf_ExternalResources): + @docval(*get_docval(hdmf_ExternalResources.__init__)) + def __init__(self, **kwargs): + kwargs['type_map'] = tm() + super().__init__(**kwargs) From f06013f547c3f8231170ed8e19725da081fd55f1 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Mon, 1 May 2023 16:45:52 -0700 Subject: [PATCH 05/23] read --- src/pynwb/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index 467f2111c..ff90c9b8d 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -302,11 +302,11 @@ def read(self, **kwargs): raise TypeError("NWB version %s not supported. PyNWB supports NWB files version 2 and above." % str(file_version_str)) # read the file + file = super().read(**kwargs) if self.external_resources is not None: - file = super().read(**kwargs) er_read=ExternalResources.from_flat_tsv(path=self.external_resources) file.link_resources(er_read) - return file + return file else: return super().read(**kwargs) From 3b10c671cab145318d55346f62ef660595eb5805 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Mon, 15 May 2023 09:37:18 -0700 Subject: [PATCH 06/23] else --- src/pynwb/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index ff90c9b8d..ef51183e4 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -307,8 +307,6 @@ def read(self, **kwargs): er_read=ExternalResources.from_flat_tsv(path=self.external_resources) file.link_resources(er_read) return file - else: - return super().read(**kwargs) @docval({'name': 'src_io', 'type': HDMFIO, 'doc': 'the HDMFIO object (such as NWBHDF5IO) that was used to read the data to export'}, From 18ee3e4c483158523335da745dd0063c93498423 Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Wed, 28 Jun 2023 09:23:29 -0700 Subject: [PATCH 07/23] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2522618fc..6a4498985 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ reqs = [ 'h5py>=2.10', - 'hdmf>=3.5.4', + 'hdmf>=3.6.0', 'numpy>=1.16', 'pandas>=1.1.5', 'python-dateutil>=2.7.3', From 0d7247febe2412af98bf581b34f6bbc9e575457a Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Wed, 28 Jun 2023 09:24:00 -0700 Subject: [PATCH 08/23] Update requirements-min.txt --- requirements-min.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-min.txt b/requirements-min.txt index 46a79dce0..5fabd76be 100644 --- a/requirements-min.txt +++ b/requirements-min.txt @@ -1,6 +1,6 @@ # minimum versions of package dependencies for installing PyNWB h5py==2.10 # support for selection of datasets with list of indices added in 2.10 -hdmf==3.5.4 +hdmf==3.6.0 numpy==1.16 pandas==1.1.5 python-dateutil==2.7.3 From 7dad93679829b5c6b0b77ff76ef315e86d9b84f5 Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Wed, 28 Jun 2023 09:27:06 -0700 Subject: [PATCH 09/23] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1b20665ca..18e895948 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # pinned dependencies to reproduce an entire development environment to use PyNWB h5py==3.8.0 -hdmf==3.5.4 +hdmf==3.6.0 numpy==1.24.2; python_version >= "3.8" numpy==1.21.5; python_version < "3.8" # note that numpy 1.22 dropped python 3.7 support pandas==2.0.0; python_version >= "3.8" From 910cacd04c83b761cf500a04234e08d90ddfc4d5 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Wed, 28 Jun 2023 11:15:09 -0700 Subject: [PATCH 10/23] flake8 --- src/pynwb/__init__.py | 9 ++++----- src/pynwb/file.py | 3 --- src/pynwb/resources.py | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index ef51183e4..d1547ab14 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -222,7 +222,8 @@ class NWBHDF5IO(_HDF5IO): 'default': None},) def __init__(self, **kwargs): path, mode, manager, extensions, load_namespaces, file_obj, comm, driver, external_resources =\ - popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', 'file', 'comm', 'driver', 'external_resources', kwargs) + popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', + 'file', 'comm', 'driver', 'external_resources', kwargs) self.external_resources = external_resources # Define the BuildManager to use if load_namespaces: @@ -304,7 +305,7 @@ def read(self, **kwargs): # read the file file = super().read(**kwargs) if self.external_resources is not None: - er_read=ExternalResources.from_flat_tsv(path=self.external_resources) + er_read = ExternalResources.from_flat_tsv(path=self.external_resources) file.link_resources(er_read) return file @@ -357,9 +358,7 @@ def export(self, **kwargs): from . import io as __io # noqa: F401,E402 from .core import NWBContainer, NWBData # noqa: F401,E402 from .base import TimeSeries, ProcessingModule # noqa: F401,E402 -from .file import NWBFile # noqa: F401,E402 -from .resources import ExternalResources - +from .file import NWBFile # noqa: F401,E402 from . import behavior # noqa: F401,E402 from . import device # noqa: F401,E402 from . import ecephys # noqa: F401,E402 diff --git a/src/pynwb/file.py b/src/pynwb/file.py index e722dcc45..b03141b7f 100644 --- a/src/pynwb/file.py +++ b/src/pynwb/file.py @@ -148,9 +148,6 @@ def __init__(self, **kwargs): for key, val in args_to_set.items(): setattr(self, key, val) -# class NWBExternalResourcesManager(ExternalResourcesManager): -# def __init__(self): -# super().__init__() @register_class('NWBFile', CORE_NAMESPACE) class NWBFile(MultiContainerInterface, ExternalResourcesManager): diff --git a/src/pynwb/resources.py b/src/pynwb/resources.py index 915d1c5ee..bfb8a6ba2 100644 --- a/src/pynwb/resources.py +++ b/src/pynwb/resources.py @@ -1,8 +1,8 @@ from hdmf.common import ExternalResources as hdmf_ExternalResources from . import get_type_map as tm -from . import register_class, CORE_NAMESPACE from hdmf.utils import docval, get_docval + class ExternalResources(hdmf_ExternalResources): @docval(*get_docval(hdmf_ExternalResources.__init__)) def __init__(self, **kwargs): From 309c8d2cc958997f3f9c063b3dec196f3a180f7f Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Wed, 28 Jun 2023 11:18:02 -0700 Subject: [PATCH 11/23] Update CHANGELOG.md --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 007d4f775..5e8073ca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # PyNWB Changelog +## PyNWB 2.3.4 (Upcoming) + +### Enhancements and minor changes +- Add support for `ExternalResources`. @mavaylon1 [#1684](https://github.com/NeurodataWithoutBorders/pynwb/pull/1684) + ## PyNWB 2.3.3 (June 26, 2023) ### Enhancements and minor changes From 46def40ec5346ebe3b2893e5d0c0b61b24894b0f Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Fri, 7 Jul 2023 09:08:48 -0700 Subject: [PATCH 12/23] move some er logic --- src/pynwb/__init__.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index d1547ab14..c6a2de624 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -217,14 +217,12 @@ class NWBHDF5IO(_HDF5IO): {'name': 'comm', 'type': "Intracomm", 'doc': 'the MPI communicator to use for parallel I/O', 'default': None}, {'name': 'driver', 'type': str, 'doc': 'driver for h5py to use when opening HDF5 file', 'default': None}, - {'name': 'external_resources', 'type': str, - 'doc': 'The path to the ExternalResources', + {'name': 'external_resources', 'type': str, 'doc': 'The path to the ExternalResources', 'default': None},) def __init__(self, **kwargs): path, mode, manager, extensions, load_namespaces, file_obj, comm, driver, external_resources =\ popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', 'file', 'comm', 'driver', 'external_resources', kwargs) - self.external_resources = external_resources # Define the BuildManager to use if load_namespaces: if manager is not None: @@ -253,7 +251,8 @@ def __init__(self, **kwargs): elif manager is None: manager = get_manager() # Open the file - super().__init__(path, manager=manager, mode=mode, file=file_obj, comm=comm, driver=driver) + super().__init__(path, manager=manager, mode=mode, file=file_obj, comm=comm, + driver=driver, external_resources=external_resources) @property def nwb_version(self): @@ -304,9 +303,8 @@ def read(self, **kwargs): str(file_version_str)) # read the file file = super().read(**kwargs) - if self.external_resources is not None: - er_read = ExternalResources.from_flat_tsv(path=self.external_resources) - file.link_resources(er_read) + if self.__external_resources is not None: + file.link_resources(self.__external_resources) return file @docval({'name': 'src_io', 'type': HDMFIO, From 0a3a5ecf91348773cd81003ff7b6a45977a1fa45 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Fri, 7 Jul 2023 09:26:31 -0700 Subject: [PATCH 13/23] private method --- src/pynwb/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index c6a2de624..c30258b1b 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -303,8 +303,9 @@ def read(self, **kwargs): str(file_version_str)) # read the file file = super().read(**kwargs) - if self.__external_resources is not None: - file.link_resources(self.__external_resources) + if self.external_resources is not None: + er_read = ExternalResources.from_norm_tsv(path=self.external_resources) + file.link_resources(er_read) return file @docval({'name': 'src_io', 'type': HDMFIO, From d5cfced5a510e12c773db05655eaa04d738b03f2 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Sun, 9 Jul 2023 10:12:41 -0700 Subject: [PATCH 14/23] init --- src/pynwb/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index c30258b1b..2c3b99592 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -217,12 +217,12 @@ class NWBHDF5IO(_HDF5IO): {'name': 'comm', 'type': "Intracomm", 'doc': 'the MPI communicator to use for parallel I/O', 'default': None}, {'name': 'driver', 'type': str, 'doc': 'driver for h5py to use when opening HDF5 file', 'default': None}, - {'name': 'external_resources', 'type': str, 'doc': 'The path to the ExternalResources', + {'name': 'external_resources_path', 'type': str, 'doc': 'The path to the ExternalResources', 'default': None},) def __init__(self, **kwargs): - path, mode, manager, extensions, load_namespaces, file_obj, comm, driver, external_resources =\ + path, mode, manager, extensions, load_namespaces, file_obj, comm, driver, external_resources_path =\ popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', - 'file', 'comm', 'driver', 'external_resources', kwargs) + 'file', 'comm', 'driver', 'external_resources_path', kwargs) # Define the BuildManager to use if load_namespaces: if manager is not None: @@ -252,7 +252,7 @@ def __init__(self, **kwargs): manager = get_manager() # Open the file super().__init__(path, manager=manager, mode=mode, file=file_obj, comm=comm, - driver=driver, external_resources=external_resources) + driver=driver, external_resources_path=external_resources_path) @property def nwb_version(self): @@ -303,8 +303,8 @@ def read(self, **kwargs): str(file_version_str)) # read the file file = super().read(**kwargs) - if self.external_resources is not None: - er_read = ExternalResources.from_norm_tsv(path=self.external_resources) + if self.external_resources_path is not None: + er_read = ExternalResources.from_norm_tsv(path=self.external_resources_path) file.link_resources(er_read) return file From 1cc5b0342ce3fbb1b699c19afc70c64f0d53467a Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Mon, 10 Jul 2023 16:54:58 -0700 Subject: [PATCH 15/23] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6a4498985..1473902e0 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ reqs = [ 'h5py>=2.10', - 'hdmf>=3.6.0', + 'hdmf>=3.7.0', 'numpy>=1.16', 'pandas>=1.1.5', 'python-dateutil>=2.7.3', From a32363e00806e83c32502b84d40f87641c569091 Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Mon, 10 Jul 2023 16:55:24 -0700 Subject: [PATCH 16/23] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 18e895948..8e5817db4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # pinned dependencies to reproduce an entire development environment to use PyNWB h5py==3.8.0 -hdmf==3.6.0 +hdmf==3.7.0 numpy==1.24.2; python_version >= "3.8" numpy==1.21.5; python_version < "3.8" # note that numpy 1.22 dropped python 3.7 support pandas==2.0.0; python_version >= "3.8" From e10eb972302070a689bb689abf90c87d654c69c0 Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Mon, 10 Jul 2023 16:56:14 -0700 Subject: [PATCH 17/23] Update requirements-min.txt --- requirements-min.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-min.txt b/requirements-min.txt index 5fabd76be..6af159100 100644 --- a/requirements-min.txt +++ b/requirements-min.txt @@ -1,6 +1,6 @@ # minimum versions of package dependencies for installing PyNWB h5py==2.10 # support for selection of datasets with list of indices added in 2.10 -hdmf==3.6.0 +hdmf==3.7.0 numpy==1.16 pandas==1.1.5 python-dateutil==2.7.3 From a0fedbdca74b39dea57536cb1d3241908dff633c Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Mon, 10 Jul 2023 17:48:15 -0700 Subject: [PATCH 18/23] clean up --- src/pynwb/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index 2c3b99592..aef89c0ea 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -303,9 +303,6 @@ def read(self, **kwargs): str(file_version_str)) # read the file file = super().read(**kwargs) - if self.external_resources_path is not None: - er_read = ExternalResources.from_norm_tsv(path=self.external_resources_path) - file.link_resources(er_read) return file @docval({'name': 'src_io', 'type': HDMFIO, From 7ad519d82d7e75ea40d7add2673f31ca851a1ba4 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Mon, 10 Jul 2023 18:02:26 -0700 Subject: [PATCH 19/23] clean up --- src/pynwb/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pynwb/__init__.py b/src/pynwb/__init__.py index aef89c0ea..181079970 100644 --- a/src/pynwb/__init__.py +++ b/src/pynwb/__init__.py @@ -13,7 +13,6 @@ from hdmf.backends.hdf5 import HDF5IO as _HDF5IO from hdmf.build import BuildManager, TypeMap import hdmf.common -from hdmf.common.resources import ExternalResources CORE_NAMESPACE = 'core' From c9fd8ed1c8d2f9c22e0dfc30f0fd5e79dccd84c0 Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Mon, 10 Jul 2023 18:04:09 -0700 Subject: [PATCH 20/23] Update .codecov.yml --- .codecov.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index 2d9d3e61b..1fc9518e6 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -10,3 +10,5 @@ coverage: # 75% of the changed code must be covered by tests threshold: 25 only_pulls: true +ignore: + - "src/pynwb/resources.py" From 367c3b464f87a3ed624c16d98cb7abc6eaf0de08 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Tue, 11 Jul 2023 08:54:07 -0700 Subject: [PATCH 21/23] test --- .codecov.yml | 2 -- tests/unit/test_resources.py | 10 ++++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 tests/unit/test_resources.py diff --git a/.codecov.yml b/.codecov.yml index 1fc9518e6..2d9d3e61b 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -10,5 +10,3 @@ coverage: # 75% of the changed code must be covered by tests threshold: 25 only_pulls: true -ignore: - - "src/pynwb/resources.py" diff --git a/tests/unit/test_resources.py b/tests/unit/test_resources.py new file mode 100644 index 000000000..3e8c509ad --- /dev/null +++ b/tests/unit/test_resources.py @@ -0,0 +1,10 @@ +from pynwb.resources import ExternalResources +from pynwb.testing import TestCase + +class TestNWBContainer(TestCase): + def test_constructor(self): + """ + Test constructor + """ + er = ExternalResources() + self.assertIsInstance(er, ExternalResources) From ce5f7c51438e115c8005cec6857b89a8186b6f70 Mon Sep 17 00:00:00 2001 From: mavaylon1 Date: Tue, 11 Jul 2023 08:54:23 -0700 Subject: [PATCH 22/23] test --- tests/unit/test_resources.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/test_resources.py b/tests/unit/test_resources.py index 3e8c509ad..cfb598b7b 100644 --- a/tests/unit/test_resources.py +++ b/tests/unit/test_resources.py @@ -1,6 +1,7 @@ from pynwb.resources import ExternalResources from pynwb.testing import TestCase + class TestNWBContainer(TestCase): def test_constructor(self): """ From fc56216274044e4c57b56bbca9cc335305beb97b Mon Sep 17 00:00:00 2001 From: Matthew Avaylon Date: Tue, 11 Jul 2023 10:00:22 -0700 Subject: [PATCH 23/23] Update requirements-min.txt --- requirements-min.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-min.txt b/requirements-min.txt index 6af159100..52f891905 100644 --- a/requirements-min.txt +++ b/requirements-min.txt @@ -1,7 +1,7 @@ # minimum versions of package dependencies for installing PyNWB h5py==2.10 # support for selection of datasets with list of indices added in 2.10 hdmf==3.7.0 -numpy==1.16 +numpy==1.18 pandas==1.1.5 python-dateutil==2.7.3 setuptools