diff --git a/lazy_dataset/database.py b/lazy_dataset/database.py index c37891d..2acfba9 100644 --- a/lazy_dataset/database.py +++ b/lazy_dataset/database.py @@ -81,6 +81,10 @@ def data(self): raise NotImplementedError( f'Override this property in {self.__class__.__name__}!') + @property + def alias(self): + return self.data.setdefault('alias', {}) + @property def dataset_names(self): """ @@ -90,7 +94,7 @@ def dataset_names(self): return tuple( self.data['datasets'].keys() ) + tuple( - self.data.get('alias', {}).keys() + self.alias.keys() ) def get_examples(self, dataset_name): @@ -107,8 +111,8 @@ def get_examples(self, dataset_name): """ try: - if dataset_name in self.data.get('alias', []): - dataset_names = self.data['alias'][dataset_name] + if dataset_name in self.alias: + dataset_names = self.alias[dataset_name] examples = {} for name in dataset_names: examples_new = self.data['datasets'][name] @@ -286,8 +290,18 @@ def __reduce__(self): @property def data(self): if self._data is None: + def read_text(path): + try: + path = Path(path) + except TypeError: + if isinstance(path, dict): + raise TypeError(f'{self.__class__.__qualname__} got a {type(path)} as json_path. Did you mean to use DictDatabase?') + else: + raise + return path.expanduser().read_text() + self._data = _merge_database_dicts(*[ - json.loads(Path(path).expanduser().read_text()) + json.loads(read_text(path)) for path in self._json_path ])