{"record":{"id":"1f839d9eba08a2cb","repo":"HKUDS/nanobot","slug":"cls-name-must-set-provider-name","errorCode":null,"errorMessage":"{cls.__name__} must set provider_name","messagePattern":"(.+?) must set provider_name","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/providers/image_generation.py","lineNumber":252,"sourceCode":"    return f\"data:{mime};base64,{encoded}\"\n\n\n# ---------------------------------------------------------------------------\n# Registry\n# ---------------------------------------------------------------------------\n\n_IMAGE_GEN_PROVIDERS: dict[str, type[ImageGenerationProvider]] = {}\n\n\ndef register_image_gen_provider(cls: type[ImageGenerationProvider]) -> None:\n    \"\"\"Register an image provider at import time only.\n\n    The registry is populated by module side effects so provider discovery\n    stays lazy and consistent across the process.\n    \"\"\"\n    name = cls.provider_name\n    if not name:\n        raise ValueError(f\"{cls.__name__} must set provider_name\")\n    _IMAGE_GEN_PROVIDERS[name] = cls\n\n\ndef get_image_gen_provider(name: str) -> type[ImageGenerationProvider] | None:\n    return _IMAGE_GEN_PROVIDERS.get(name)\n\n\ndef image_gen_provider_names() -> tuple[str, ...]:\n    \"\"\"Return registered image generation provider names in registry order.\"\"\"\n    return tuple(_IMAGE_GEN_PROVIDERS)\n\n\ndef image_gen_provider_configs(config: Config) -> dict[str, ProviderConfig]:\n    providers_cfg = config.providers\n    return {\n        name: pc\n        for name in _IMAGE_GEN_PROVIDERS\n        if (pc := getattr(providers_cfg, name, None)) is not None","sourceCodeStart":234,"sourceCodeEnd":270,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/providers/image_generation.py#L234-L270","documentation":"Error \"{cls.__name__} must set provider_name\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/providers/image_generation.py:252 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}