from toolbench.tooleval.evaluators.registered_cls import BaseEvaluator,register_evaluator,get_evaluator_cls

__all__=['register_evaluator','get_evaluator_cls','BaseEvaluator','load_registered_automatic_evaluator']



def load_registered_automatic_evaluator(config:dict={},evaluator_name=None,evaluators_cfg_path=None)->BaseEvaluator:
    import os
    import yaml
    
    evaluator_name = config['evaluator'] if evaluator_name is None else evaluator_name
    cfg_path = config['evaluators_cfg_path'] if evaluators_cfg_path is None else evaluators_cfg_path
    cfg_path = os.path.join(cfg_path,evaluator_name)
    
    cls_name = yaml.load(open(os.path.join(cfg_path,'config.yaml')),Loader=yaml.FullLoader)['registered_cls_name']
    
    evaluator:BaseEvaluator = get_evaluator_cls(cls_name)(cfg_path)
    return evaluator