From f18b9c4bd5d54042f38372ce05308fe005d6128c Mon Sep 17 00:00:00 2001 From: Ryan Ly Date: Sat, 8 Feb 2025 00:06:27 -0800 Subject: [PATCH] Cleanup --- src/hdmf/backends/hdf5/h5tools.py | 2 +- src/hdmf/build/objectmapper.py | 4 ++-- src/hdmf/common/resources.py | 4 ++-- src/hdmf/common/table.py | 4 ++-- src/hdmf/spec/spec.py | 29 +++++++++++++---------------- src/hdmf/validate/validator.py | 4 ++-- 6 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/hdmf/backends/hdf5/h5tools.py b/src/hdmf/backends/hdf5/h5tools.py index d30cef06c..493c4057f 100644 --- a/src/hdmf/backends/hdf5/h5tools.py +++ b/src/hdmf/backends/hdf5/h5tools.py @@ -1086,7 +1086,7 @@ def write_link(self, **kwargs): self.__set_written(builder) return link_obj - @docval({'name': 'parent', 'type': Group, 'doc': 'the parent HDF5 object'}, # noqa: C901 + @docval({'name': 'parent', 'type': Group, 'doc': 'the parent HDF5 object'}, {'name': 'builder', 'type': DatasetBuilder, 'doc': 'the DatasetBuilder to write'}, {'name': 'link_data', 'type': bool, 'doc': 'If not specified otherwise link (True) or copy (False) HDF5 Datasets', 'default': True}, diff --git a/src/hdmf/build/objectmapper.py b/src/hdmf/build/objectmapper.py index 176de322c..e683e60bf 100644 --- a/src/hdmf/build/objectmapper.py +++ b/src/hdmf/build/objectmapper.py @@ -184,7 +184,7 @@ def no_convert(cls, obj_type): """ cls.__no_convert.add(obj_type) - @classmethod # noqa: C901 + @classmethod def convert_dtype(cls, spec, value, spec_dtype=None): # noqa: C901 """ Convert values to the specified dtype. For example, if a literal int @@ -276,7 +276,7 @@ def __check_convert_numeric(cls, value_type): np.issubdtype(value_dtype, np.integer)): raise ValueError("Cannot convert from %s to 'numeric' specification dtype." % value_type) - @classmethod # noqa: C901 + @classmethod def __check_edgecases(cls, spec, value, spec_dtype): # noqa: C901 """ Check edge cases in converting data to a dtype diff --git a/src/hdmf/common/resources.py b/src/hdmf/common/resources.py index e93ccc135..2071415a0 100644 --- a/src/hdmf/common/resources.py +++ b/src/hdmf/common/resources.py @@ -1000,9 +1000,9 @@ def get_zip_directory(cls, path): directory = os.path.dirname(os.path.realpath(path)) return directory - @classmethod # noqa: C901 + @classmethod @docval({'name': 'path', 'type': str, 'doc': 'The path to the zip file.'}) - def from_zip(cls, **kwargs): + def from_zip(cls, **kwargs): # noqa: C901 """ Method to read in zipped tsv files to populate HERD. """ diff --git a/src/hdmf/common/table.py b/src/hdmf/common/table.py index 8b57bd569..40380b46e 100644 --- a/src/hdmf/common/table.py +++ b/src/hdmf/common/table.py @@ -304,7 +304,7 @@ def __gather_columns(cls, name, bases, classdict): except AttributeError: # raises error when "__columns__" is not an attr of item continue - @docval({'name': 'name', 'type': str, 'doc': 'the name of this table'}, # noqa: C901 + @docval({'name': 'name', 'type': str, 'doc': 'the name of this table'}, {'name': 'description', 'type': str, 'doc': 'a description of what is in this table'}, {'name': 'id', 'type': ('array_data', 'data', ElementIdentifiers), 'doc': 'the identifiers for this table', 'default': None}, @@ -749,7 +749,7 @@ def __eq__(self, other): return False return self.to_dataframe().equals(other.to_dataframe()) - @docval({'name': 'name', 'type': str, 'doc': 'the name of this VectorData'}, # noqa: C901 + @docval({'name': 'name', 'type': str, 'doc': 'the name of this VectorData'}, {'name': 'description', 'type': str, 'doc': 'a description for this column'}, {'name': 'data', 'type': ('array_data', 'data'), 'doc': 'a dataset where the first dimension is a concatenation of multiple vectors', 'default': list()}, diff --git a/src/hdmf/spec/spec.py b/src/hdmf/spec/spec.py index cf29c8b0e..665be4a34 100644 --- a/src/hdmf/spec/spec.py +++ b/src/hdmf/spec/spec.py @@ -1062,7 +1062,7 @@ def is_inherited_spec(self, **kwargs): return False @docval({'name': 'spec', 'type': Spec, 'doc': 'the specification to check'}) - def is_overridden_spec(self, **kwargs): # noqa: C901 + def is_overridden_spec(self, **kwargs): ''' Returns 'True' if specification overrides a specification from the parent type ''' spec = getargs('spec', kwargs) spec_name = spec.name @@ -1086,23 +1086,20 @@ def is_overridden_spec(self, **kwargs): # noqa: C901 return self.is_overridden_dataset(spec_name) elif spec_name in self.__data_types: return self.is_overridden_type(spec_name) + elif super().is_overridden_spec(spec): # attribute spec + return True else: - if super().is_overridden_spec(spec): # check if overridden attribute - return True + parent_name = spec.parent.name + if parent_name is None: + parent_name = spec.parent.data_type + if isinstance(spec.parent, DatasetSpec): + if (parent_name in self.__datasets and self.is_overridden_dataset(parent_name) and + self.__datasets[parent_name].is_overridden_spec(spec)): + return True else: - parent_name = spec.parent.name - if parent_name is None: - parent_name = spec.parent.data_type - if isinstance(spec.parent, DatasetSpec): - if parent_name in self.__datasets: - if self.is_overridden_dataset(parent_name): - if self.__datasets[parent_name].is_overridden_spec(spec): - return True - else: - if parent_name in self.__groups: - if self.is_overridden_group(parent_name): - if self.__groups[parent_name].is_overridden_spec(spec): - return True + if (parent_name in self.__groups and self.is_overridden_group(parent_name) and + self.__groups[parent_name].is_overridden_spec(spec)): + return True return False @docval({'name': 'spec', 'type': (BaseStorageSpec, str), 'doc': 'the specification to check'}) diff --git a/src/hdmf/validate/validator.py b/src/hdmf/validate/validator.py index d7ec78eaa..1a0be981d 100644 --- a/src/hdmf/validate/validator.py +++ b/src/hdmf/validate/validator.py @@ -472,9 +472,9 @@ class GroupValidator(BaseStorageValidator): def __init__(self, **kwargs): super().__init__(**kwargs) - @docval({"name": "builder", "type": GroupBuilder, "doc": "the builder to validate"}, # noqa: C901 + @docval({"name": "builder", "type": GroupBuilder, "doc": "the builder to validate"}, returns='a list of Errors', rtype=list) - def validate(self, **kwargs): # noqa: C901 + def validate(self, **kwargs): builder = getargs('builder', kwargs) errors = super().validate(builder) errors.extend(self.__validate_children(builder))