@TaskTemplate()
def import_directory(
directory: str | Path,
exclude_prefixes: tuple[str, ...] = ('.', '_'),
include_suffixes: tuple[str, ...] = (),
dataset_cls: type[_DatasetT] = Dataset[Model[str]], # type: ignore
open_func: Callable[[str], IOBase] = open) -> _DatasetT:
dataset = dataset_cls()
for import_filename in os.listdir(directory):
if not exclude_prefixes or \
not any(import_filename.startswith(prefix) for prefix in exclude_prefixes):
if not include_suffixes or \
any(import_filename.endswith(suffix) for suffix in include_suffixes):
with open_func(os.path.join(directory, import_filename)) as open_file:
dataset_name = '_'.join(import_filename.split('.')[:-1])
print(f"{import_filename} -> Dataset['{dataset_name}']")
dataset[dataset_name] = open_file.read()
return dataset