Spaces:
Runtime error
Runtime error
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) | |