# Copyright (c) Meta Platforms, Inc. and affiliates.# All rights reserved.## This source code is licensed under the terms described in the LICENSE file in# the root directory of this source tree.fromtypingimportTypefromare.simulation.validation.baseimportBaseJudgefromare.simulation.validation.configsimport(BaseJudgeConfig,GraphPerEventJudgeConfig,InContextJudgeConfig,ScriptedGraphPerEventJudgeConfig,)fromare.simulation.validation.judgeimportGraphPerEventJudge,InContextJudge
[docs]classJudgeFactory:def__init__(self)->None:self.judge_classes:dict[Type[BaseJudgeConfig],Type[BaseJudge]]={ScriptedGraphPerEventJudgeConfig:GraphPerEventJudge,GraphPerEventJudgeConfig:GraphPerEventJudge,InContextJudgeConfig:InContextJudge,}def__call__(self,config:BaseJudgeConfig)->BaseJudge:judge_class=self.judge_classes.get(type(config),None)ifjudge_classisNone:raiseValueError(f"No judge class found for config {type(config)}")returnjudge_class(config)