{"record":{"id":"3f7cfa0ac1a6cd58","repo":"mudler/LocalAI","slug":"unknown-pipeline-class-name","errorCode":null,"errorMessage":"Unknown pipeline: {class_name}","messagePattern":"Unknown pipeline: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"warning","filePath":"backend/python/diffusers/diffusers_dynamic_loader.py","lineNumber":523,"sourceCode":"def get_pipeline_info(class_name: str) -> Dict[str, Any]:\n    \"\"\"\n    Get information about a specific pipeline class.\n\n    Args:\n        class_name: The pipeline class name\n\n    Returns:\n        Dictionary with pipeline information including:\n        - name: Class name\n        - aliases: List of task aliases\n        - supports_single_file: Whether from_single_file() is available\n        - docstring: Class docstring (if available)\n    \"\"\"\n    registry = get_pipeline_registry()\n    aliases = get_task_aliases()\n\n    if class_name not in registry:\n        raise ValueError(f\"Unknown pipeline: {class_name}\")\n\n    cls = registry[class_name]\n\n    # Find all aliases for this pipeline\n    pipeline_aliases = []\n    for alias, classes in aliases.items():\n        if class_name in classes:\n            pipeline_aliases.append(alias)\n\n    return {\n        'name': class_name,\n        'aliases': pipeline_aliases,\n        'supports_single_file': hasattr(cls, 'from_single_file'),\n        'docstring': cls.__doc__[:200] if cls.__doc__ else None\n    }\n","sourceCodeStart":505,"sourceCodeEnd":539,"githubUrl":"https://github.com/mudler/LocalAI/blob/44413a9d06bf5bc52ce088ba8ca74e5a2e8bee26/backend/python/diffusers/diffusers_dynamic_loader.py#L505-L539","documentation":"Raised by get_pipeline_info when the requested class_name is not a key in the pipeline registry — this informational helper requires an exact (case-sensitive) registry hit, unlike resolve_pipeline_class which tolerates case differences. The registry is built from the installed diffusers version's discovered pipelines.","triggerScenarios":"Calling get_pipeline_info('stableDiffusionPipeline') (wrong case), a slug like 'stable-diffusion-pipeline', or a class unknown to the installed diffusers.","commonSituations":"UIs or scripts listing pipeline metadata with user free-text input, casing copied from docs that differs from the actual class name, or querying a pipeline from a newer diffusers than installed.","solutions":["Use the exact class name spelling, e.g. get_pipeline_info('StableDiffusionPipeline').","Enumerate valid names first via get_available_pipelines() / the registry keys and validate user input against them.","Upgrade diffusers if the class should exist."],"exampleFix":"# before\ninfo = get_pipeline_info(\"stable-diffusion-xl-pipeline\")\n\n# after\ninfo = get_pipeline_info(\"StableDiffusionXLPipeline\")","handlingStrategy":"validation","validationCode":"registry = get_pipeline_registry()\nassert class_name in registry, f\"unknown pipeline {class_name!r}; valid: {sorted(registry)[:20]}\"","typeGuard":"def is_registered_pipeline(class_name: str) -> bool:\n    return class_name in get_pipeline_registry()","tryCatchPattern":"try:\n    info = get_pipeline_info(class_name)\nexcept ValueError:\n    info = None  # metadata lookup is optional; degrade gracefully","preventionTips":["Populate UI dropdowns from get_available_pipelines() so names are always exact.","Remember this lookup is case-sensitive, unlike resolve_pipeline_class.","Treat info lookup failures as non-fatal; it is metadata, not loading."],"tags":["diffusers","pipeline-registry","validation","metadata"],"backgroundTag":null,"analyzedSha":"44413a9d06bf5bc52ce088ba8ca74e5a2e8bee26","analyzedAt":"2026-08-15T10:13:50.291Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}