Source code for kaira.benchmarks.registry

"""Benchmark registry for managing and discovering benchmarks."""

from typing import Dict, List, Optional, Type

from .base import BaseBenchmark


[docs] class BenchmarkRegistry: """Registry for managing benchmark classes and instances.""" _instance = None """Singleton instance of the registry.""" _benchmarks: Dict[str, Type[BaseBenchmark]] = {} """Dictionary storing registered benchmark classes.""" def __new__(cls): """Ensure singleton pattern for the registry.""" if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance
[docs] @classmethod def register(cls, name: str, benchmark_class: Type[BaseBenchmark]) -> None: """Register a benchmark class.""" cls._benchmarks[name] = benchmark_class
[docs] @classmethod def get(cls, name: str) -> Optional[Type[BaseBenchmark]]: """Get a registered benchmark class.""" return cls._benchmarks.get(name)
[docs] @classmethod def list_available(cls) -> List[str]: """List all available benchmark names.""" return list(cls._benchmarks.keys())
[docs] @classmethod def create_benchmark(cls, name: str, **kwargs) -> Optional[BaseBenchmark]: """Create an instance of a registered benchmark.""" benchmark_class = cls.get(name) if benchmark_class is None: return None return benchmark_class(**kwargs)
[docs] @classmethod def clear(cls) -> None: """Clear all registered benchmarks.""" cls._benchmarks.clear()
# Global registry instance _registry = BenchmarkRegistry()
[docs] def register_benchmark(name: str): """Decorator to register a benchmark class.""" def decorator(benchmark_class: Type[BaseBenchmark]): """Register the benchmark class with the given name.""" _registry.register(name, benchmark_class) return benchmark_class return decorator
[docs] def get_benchmark(name: str) -> Optional[Type[BaseBenchmark]]: """Get a registered benchmark class.""" return _registry.get(name)
[docs] def list_benchmarks() -> List[str]: """List all available benchmark names.""" return _registry.list_available()
[docs] def create_benchmark(name: str, **kwargs) -> Optional[BaseBenchmark]: """Create an instance of a registered benchmark.""" return _registry.create_benchmark(name, **kwargs)