Register a benchmark class or instance.
(self,
benchmark: Union[Benchmark, Type[Benchmark]],
benchmark_config_dict: Optional[Dict[str, Any]] = None,
override: bool = False,
version: Optional[str] = None)
| 241 | return benchmark_configs |
| 242 | |
| 243 | async def register(self, |
| 244 | benchmark: Union[Benchmark, Type[Benchmark]], |
| 245 | benchmark_config_dict: Optional[Dict[str, Any]] = None, |
| 246 | override: bool = False, |
| 247 | version: Optional[str] = None) -> BenchmarkConfig: |
| 248 | """Register a benchmark class or instance.""" |
| 249 | try: |
| 250 | if isinstance(benchmark, Benchmark): |
| 251 | benchmark_instance = benchmark |
| 252 | benchmark_cls = type(benchmark) |
| 253 | if benchmark_config_dict: |
| 254 | raise ValueError("Extra configuration not allowed when registering benchmark instances.") |
| 255 | benchmark_config_dict = {} |
| 256 | else: |
| 257 | benchmark_cls = benchmark |
| 258 | if benchmark_config_dict is None: |
| 259 | name_key = inflection.underscore(benchmark_cls.__name__) |
| 260 | benchmark_config_dict = config.get(name_key, {}) |
| 261 | |
| 262 | try: |
| 263 | benchmark_instance = benchmark_cls(**benchmark_config_dict) |
| 264 | except Exception as e: |
| 265 | raise ValueError(f"Failed to instantiate benchmark {benchmark_cls.__name__}: {e}") |
| 266 | |
| 267 | benchmark_name = benchmark_instance.name |
| 268 | benchmark_description = benchmark_instance.description |
| 269 | |
| 270 | if not benchmark_name: |
| 271 | raise ValueError("Benchmark.name cannot be empty.") |
| 272 | |
| 273 | if benchmark_name in self._benchmark_configs and not override: |
| 274 | raise ValueError(f"Benchmark '{benchmark_name}' already registered. Use override=True.") |
| 275 | |
| 276 | if version is None: |
| 277 | version = await version_manager.get_version("benchmark", benchmark_name) |
| 278 | |
| 279 | code = dynamic_manager.get_full_module_source(benchmark_cls) |
| 280 | |
| 281 | benchmark_config = BenchmarkConfig( |
| 282 | name=benchmark_name, |
| 283 | description=benchmark_description, |
| 284 | version=version, |
| 285 | cls=benchmark_cls, |
| 286 | config=benchmark_config_dict, |
| 287 | instance=benchmark_instance if isinstance(benchmark, Benchmark) else None, |
| 288 | metadata=getattr(benchmark_instance, 'metadata', {}), |
| 289 | code=code, |
| 290 | ) |
| 291 | |
| 292 | self._benchmark_configs[benchmark_name] = benchmark_config |
| 293 | if benchmark_name not in self._benchmark_history_versions: |
| 294 | self._benchmark_history_versions[benchmark_name] = {} |
| 295 | self._benchmark_history_versions[benchmark_name][version] = benchmark_config |
| 296 | |
| 297 | await version_manager.register_version("benchmark", benchmark_name, version) |
| 298 | await self.save_to_json() |
| 299 | await self.save_contract() |
| 300 |
nothing calls this directly
no test coverage detected