MCPcopy Index your code
hub / github.com/mudler/LocalAI / _discover_pipelines

Function _discover_pipelines

backend/python/diffusers/diffusers_dynamic_loader.py:217–264  ·  view source on GitHub ↗

Discover all subclasses of DiffusionPipeline from diffusers. This function uses the generic discover_diffusers_classes() internally and adds pipeline-specific task alias generation. It also includes AutoPipeline classes which are special utility classes for automatic pipeline s

()

Source from the content-addressed store, hash-verified

215
216
217def _discover_pipelines() -> Tuple[Dict[str, Type], Dict[str, List[str]]]:
218 """
219 Discover all subclasses of DiffusionPipeline from diffusers.
220
221 This function uses the generic discover_diffusers_classes() internally
222 and adds pipeline-specific task alias generation. It also includes
223 AutoPipeline classes which are special utility classes for automatic
224 pipeline selection.
225
226 Returns:
227 A tuple of (pipeline_registry, task_aliases) where:
228 - pipeline_registry: Dict mapping class names to class objects
229 - task_aliases: Dict mapping task aliases to lists of class names
230 """
231 # Use the generic discovery function
232 pipeline_registry = discover_diffusers_classes("DiffusionPipeline", include_base=True)
233
234 # Also add AutoPipeline classes - these are special utility classes that are
235 # NOT subclasses of DiffusionPipeline but are commonly used
236 import diffusers
237 auto_pipeline_classes = [
238 "AutoPipelineForText2Image",
239 "AutoPipelineForImage2Image",
240 "AutoPipelineForInpainting",
241 ]
242 for cls_name in auto_pipeline_classes:
243 try:
244 cls = getattr(diffusers, cls_name)
245 if cls is not None:
246 pipeline_registry[cls_name] = cls
247 except AttributeError:
248 # Class not available in this version of diffusers
249 pass
250
251 # Generate task aliases for pipelines
252 task_aliases: Dict[str, List[str]] = {}
253 for attr_name in pipeline_registry:
254 if attr_name == "DiffusionPipeline":
255 continue # Skip base class for alias generation
256
257 aliases = _extract_task_keywords(attr_name)
258 for alias in aliases:
259 if alias not in task_aliases:
260 task_aliases[alias] = []
261 if attr_name not in task_aliases[alias]:
262 task_aliases[alias].append(attr_name)
263
264 return pipeline_registry, task_aliases
265
266
267def get_pipeline_registry() -> Dict[str, Type]:

Callers 2

get_pipeline_registryFunction · 0.85
get_task_aliasesFunction · 0.85

Calls 3

_extract_task_keywordsFunction · 0.85
appendMethod · 0.80

Tested by

no test coverage detected