Skip to content

Commit fee1bba

Browse files
author
yiyixuxu
committed
soft dependency on m-clip
1 parent 14b3f9d commit fee1bba

File tree

6 files changed

+57
-3
lines changed

6 files changed

+57
-3
lines changed

src/diffusers/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
is_scipy_available,
1414
is_torch_available,
1515
is_torchsde_available,
16+
is_multilingual_clip_available,
1617
is_transformers_available,
1718
is_transformers_version,
1819
is_unidecode_available,
@@ -170,6 +171,14 @@
170171
else:
171172
from .pipelines import StableDiffusionKDiffusionPipeline
172173

174+
try:
175+
if not(is_torch_available() and is_transformers_available() and is_multilingual_clip_available()):
176+
raise OptionalDependencyNotAvailable()
177+
except OptionalDependencyNotAvailable:
178+
from .utils.dummy_torch_and_transformers_and_multilingual_clip_objects import * # noqa F403
179+
else:
180+
from .pipelines import KandinskyPipeline
181+
173182
try:
174183
if not (is_torch_available() and is_transformers_available() and is_onnx_available()):
175184
raise OptionalDependencyNotAvailable()

src/diffusers/pipelines/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
is_onnx_available,
88
is_torch_available,
99
is_transformers_available,
10+
is_multilingual_clip_available,
1011
)
1112

1213

@@ -119,6 +120,14 @@
119120
else:
120121
from .stable_diffusion import StableDiffusionKDiffusionPipeline
121122

123+
try:
124+
if not (is_torch_available() and is_transformers_available() and is_multilingual_clip_available()):
125+
raise OptionalDependencyNotAvailable()
126+
except OptionalDependencyNotAvailable:
127+
from ..utils.dummy_torch_and_transformers_and_multilingual_clip_diffusion_objects import * # noqa F403
128+
else:
129+
from .kandinsky import KandinskyPipeline
130+
122131
try:
123132
if not is_flax_available():
124133
raise OptionalDependencyNotAvailable()

src/diffusers/pipelines/kandinsky/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
is_torch_available,
44
is_transformers_available,
55
is_transformers_version,
6+
is_multilingual_clip_available,
67
)
78

89

910
try:
10-
if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.25.0")):
11+
if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.25.0")) and is_multilingual_clip_available:
1112
raise OptionalDependencyNotAvailable()
1213
except OptionalDependencyNotAvailable:
13-
print("to-do")
14-
# from ...utils.dummy_torch_and_transformers_objects import UnCLIPImageVariationPipeline, UnCLIPPipeline
14+
from ...utils.dummy_torch_and_transformers_and_multilingual_clip_diffusion_objects import KandinskyPipeline
1515
else:
1616
from .pipeline_kandinsky import KandinskyPipeline
17+
from .text_proj import KandinskyTextProjModel

src/diffusers/utils/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
is_transformers_version,
7676
is_unidecode_available,
7777
is_wandb_available,
78+
is_multilingual_clip_available,
7879
is_xformers_available,
7980
requires_backends,
8081
)

src/diffusers/utils/dummy_torch_and_transformers_objects.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,21 @@ def from_pretrained(cls, *args, **kwargs):
542542
requires_backends(cls, ["torch", "transformers"])
543543

544544

545+
class KandinskyPipeline(metaclass=DummyObject):
546+
_backends = ["torch", "transformers"]
547+
548+
def __init__(self, *args, **kwargs):
549+
requires_backends(self, ["torch", "transformers"])
550+
551+
@classmethod
552+
def from_config(cls, *args, **kwargs):
553+
requires_backends(cls, ["torch", "transformers"])
554+
555+
@classmethod
556+
def from_pretrained(cls, *args, **kwargs):
557+
requires_backends(cls, ["torch", "transformers"])
558+
559+
545560
class VersatileDiffusionDualGuidedPipeline(metaclass=DummyObject):
546561
_backends = ["torch", "transformers"]
547562

src/diffusers/utils/import_utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,14 @@
295295
_torchsde_available = False
296296

297297

298+
_multilingual_clip_available = importlib.util.find_spec("multilingual-clip") is not None
299+
try:
300+
_multilingual_clip_version = importlib_metadata.version("multilingual-clip")
301+
logger.debug(f"Successfully imported multilingual-clip version {_multilingual_clip_version}")
302+
except importlib_metadata.PackageNotFoundError:
303+
_multilingual_clip_available = False
304+
305+
298306
def is_torch_available():
299307
return _torch_available
300308

@@ -383,6 +391,10 @@ def is_torchsde_available():
383391
return _torchsde_available
384392

385393

394+
def is_multilingual_clip_available():
395+
return is_multilingual_clip_available
396+
397+
386398
# docstyle-ignore
387399
FLAX_IMPORT_ERROR = """
388400
{0} requires the FLAX library but it was not found in your environment. Checkout the instructions on the
@@ -492,6 +504,12 @@ def is_torchsde_available():
492504
"""
493505

494506

507+
# docstyle-ignore
508+
MULTILINGUAL_CLIP_IMPORT_ERROR = """
509+
{0} requires the multilingual-clip library but it was not found in your environment. You can install it with pip: `pip install multilingual-clip`
510+
"""
511+
512+
495513
BACKENDS_MAPPING = OrderedDict(
496514
[
497515
("bs4", (is_bs4_available, BS4_IMPORT_ERROR)),
@@ -512,6 +530,7 @@ def is_torchsde_available():
512530
("compel", (_compel_available, COMPEL_IMPORT_ERROR)),
513531
("ftfy", (is_ftfy_available, FTFY_IMPORT_ERROR)),
514532
("torchsde", (_torchsde_available, TORCHSDE_IMPORT_ERROR)),
533+
("multilingual-clip", (_multilingual_clip_available, MULTILINGUAL_CLIP_IMPORT_ERROR)),
515534
]
516535
)
517536

0 commit comments

Comments
 (0)