| import copy | |
| datasets = {} | |
| def register(name): | |
| def decorator(cls): | |
| datasets[name] = cls | |
| return cls | |
| return decorator | |
| def make(dataset_spec, args=None): | |
| if args is not None: | |
| dataset_args = copy.deepcopy(dataset_spec['args']) | |
| dataset_args.update(args) | |
| else: | |
| dataset_args = dataset_spec['args'] | |
| dataset = datasets[dataset_spec['name']](**dataset_args) | |
| return dataset | |