Spaces:
Runtime error
Runtime error
File size: 1,636 Bytes
6216ecd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from cerberus import Validator
import importlib
import os
def validate_config(config):
basic_schema = {
"task": {
"type":"string",
"required":True
},
"dataset": {
"type":"string",
"required":True
},
"model": {
"type":"string",
"required":True
},
}
basic_v = Validator(basic_schema,allow_unknown=True)
if not basic_v.validate(config.config_dict):
raise Exception(f"Invalid config file:",basic_v.errors)
# check if such task exists
if not os.path.exists(os.path.join("src",config.task)):
raise Exception("Invalid config file:",f"no such task {config.task}")
# check if valid dataset
all_datasets = importlib.import_module(f"src.{config.task}.data.register_datasets").datasets
if config.dataset not in all_datasets:
raise Exception("Invalid config file:",f"no {config.dataset} dataset found in registered datasets: {all_datasets}")
# check if valid model
all_models = importlib.import_module(f"src.{config.task}.model.register_models").models
if config.model not in all_models:
raise Exception("Invalid config file:",f"no {config.model} model found in registered models: {all_models}")
# check the sub_task's validate_config schema
task_schema = importlib.import_module(f"src.{config.task}.validate_config").schema
sub_task_v = Validator(task_schema,allow_unknown=True)
if not sub_task_v.validate(config.config_dict):
raise Exception(f"Invalid config file:",sub_task_v.errors)
|