Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions lazy_dataset/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
"""
Expand All @@ -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):
Expand All @@ -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]
Expand Down Expand Up @@ -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
])

Expand Down