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
()
| 215 | |
| 216 | |
| 217 | def _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 | |
| 267 | def get_pipeline_registry() -> Dict[str, Type]: |
no test coverage detected