Files
automatic/pipelines/lens/__init__.py
T
CalamitousFelicitousness 3368ce95f7 feat(pipelines): wire native_spec for Qwen-Image and custom-class arches
Qwen-Image: diffusers registers a no-op identity lambda for
QwenImageTransformer2DModel; from_single_file silently accepted any
key naming and loaded with mismatches. QWEN_SPEC sets converter=None
to short-circuit the no-op.

Custom transformer classes (Lens, Step1X-Edit, VIBE Sana, f-lite):
runtime-registered onto diffusers, never in SINGLE_FILE_LOADABLE_CLASSES.
Specs land in each arch's existing pipelines/<arch>/__init__.py.

NextStep skipped: loader returns None up front.
2026-05-31 00:24:33 +01:00

56 lines
2.2 KiB
Python

"""Lens - minimal text-to-image inference package."""
import diffusers as _diffusers
import transformers as _transformers
from pipelines.native_transformer import TransformerSpec
from .pipeline import LensPipeline, LensPipelineOutput
from .pipeline_image import LensImg2ImgPipeline, LensInpaintPipeline
from .reasoner import PromptReasoner
from .resolution import RESOLUTION_BUCKETS, resolve_resolution
from .text_encoder import LensGptOssEncoder
from .transformer import LensTransformer2DModel
LENS_SPEC = TransformerSpec(cls=LensTransformer2DModel)
# ---------------------------------------------------------------------------
# Make our custom subclasses discoverable by ``diffusers.DiffusionPipeline``.
#
# When ``LensPipeline.from_pretrained`` reads ``model_index.json``, it sees
# entries like ``["transformers", "LensGptOssEncoder"]`` and runs
# ``getattr(importlib.import_module("transformers"), "LensGptOssEncoder")``.
# diffusers only allow-lists the libraries ``diffusers``, ``transformers`` and
# ``onnxruntime.training`` - any other name is interpreted as a custom .py file
# in the repo. So we inject our subclasses into those two namespaces here.
#
# Importing ``lens`` is required before calling ``LensPipeline.from_pretrained``
# (this happens automatically when the user does ``from lens import LensPipeline``).
# ---------------------------------------------------------------------------
if not hasattr(_transformers, "LensGptOssEncoder"):
_transformers.LensGptOssEncoder = LensGptOssEncoder
if not hasattr(_diffusers, "LensTransformer2DModel"):
_diffusers.LensTransformer2DModel = LensTransformer2DModel
if not hasattr(_diffusers, "LensPipeline"):
_diffusers.LensPipeline = LensPipeline
if not hasattr(_diffusers, "LensImg2ImgPipeline"):
_diffusers.LensImg2ImgPipeline = LensImg2ImgPipeline
if not hasattr(_diffusers, "LensInpaintPipeline"):
_diffusers.LensInpaintPipeline = LensInpaintPipeline
# Clean up local module references after registration.
del _diffusers, _transformers
__all__ = [
"LENS_SPEC",
"LensPipeline",
"LensPipelineOutput",
"LensImg2ImgPipeline",
"LensInpaintPipeline",
"LensTransformer2DModel",
"LensGptOssEncoder",
"PromptReasoner",
"RESOLUTION_BUCKETS",
"resolve_resolution",
]