from typing import Type from benchmark.draw_bench import DrawBenchPrompts from benchmark.genai_bench import GenAIBenchPrompts from benchmark.geneval import GenEvalPrompts from benchmark.hps import HPSPrompts from benchmark.parti import PartiPrompts def create_benchmark( benchmark_type: str, ) -> Type[ DrawBenchPrompts | GenAIBenchPrompts | GenEvalPrompts | HPSPrompts | PartiPrompts ]: """ Factory function to create benchmark instances. Args: benchmark_type (str): The type of benchmark to create. Must be one of: - "draw_bench" - "genai_bench" - "geneval" - "hps" - "parti" Returns: An instance of the requested benchmark implementation Raises: ValueError: If an invalid benchmark type is provided """ benchmark_map = { "draw_bench": DrawBenchPrompts, "genai_bench": GenAIBenchPrompts, "geneval": GenEvalPrompts, "hps": HPSPrompts, "parti": PartiPrompts, } if benchmark_type not in benchmark_map: raise ValueError( f"Invalid benchmark type: {benchmark_type}. Must be one of {list(benchmark_map.keys())}" ) return benchmark_map[benchmark_type]()