



import gc
import unittest

import numpy as np
import torch

from diffusers import StableDiffusionKDiffusionPipeline
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()







@slow
@require_torch_gpu
class       __lowerCAmelCase   (      unittest.TestCase						):



			def    _lowerCamelCase	(						self       :  str)       ->   List[Any]:



						"""simple docstring"""






						super().tearDown()
						gc.collect()
						torch.cuda.empty_cache()



			def    _lowerCamelCase	(						self       :  int)       ->   Union[str, Any]:



						"""simple docstring"""






						_UpperCAmelCase			=       StableDiffusionKDiffusionPipeline.from_pretrained('CompVis/stable-diffusion-v1-4')
						_UpperCAmelCase			=       sd_pipe.to(__lowerCamelCase)
						sd_pipe.set_progress_bar_config(disable=__lowerCamelCase)

						sd_pipe.set_scheduler('sample_euler')

						_UpperCAmelCase			=       'A painting of a squirrel eating a burger'
						_UpperCAmelCase			=       torch.manual_seed(0)
						_UpperCAmelCase			=       sd_pipe([prompt]			,		generator=__lowerCamelCase			,		guidance_scale=9.0			,		num_inference_steps=20			,		output_type='np')

						_UpperCAmelCase			=       output.images

						_UpperCAmelCase			=       image[0, -3:, -3:, -1]

						assert image.shape == (1, 5_12, 5_12, 3)
						_UpperCAmelCase			=       np.array([0.0_4_4_7, 0.0_4_9_2, 0.0_4_6_8, 0.0_4_0_8, 0.0_3_8_3, 0.0_4_0_8, 0.0_3_5_4, 0.0_3_8_0, 0.0_3_3_9])

						assert np.abs(image_slice.flatten() - expected_slice).max() < 1E-2



			def    _lowerCamelCase	(						self       :  int)       ->   Optional[Any]:



						"""simple docstring"""






						_UpperCAmelCase			=       StableDiffusionKDiffusionPipeline.from_pretrained('stabilityai/stable-diffusion-2-1-base')
						_UpperCAmelCase			=       sd_pipe.to(__lowerCamelCase)
						sd_pipe.set_progress_bar_config(disable=__lowerCamelCase)

						sd_pipe.set_scheduler('sample_euler')

						_UpperCAmelCase			=       'A painting of a squirrel eating a burger'
						_UpperCAmelCase			=       torch.manual_seed(0)
						_UpperCAmelCase			=       sd_pipe([prompt]			,		generator=__lowerCamelCase			,		guidance_scale=9.0			,		num_inference_steps=20			,		output_type='np')

						_UpperCAmelCase			=       output.images

						_UpperCAmelCase			=       image[0, -3:, -3:, -1]

						assert image.shape == (1, 5_12, 5_12, 3)
						_UpperCAmelCase			=       np.array([0.1_2_3_7, 0.1_3_2_0, 0.1_4_3_8, 0.1_3_5_9, 0.1_3_9_0, 0.1_1_3_2, 0.1_2_7_7, 0.1_1_7_5, 0.1_1_1_2])

						assert np.abs(image_slice.flatten() - expected_slice).max() < 5E-1



			def    _lowerCamelCase	(						self       :  List[str])       ->   List[str]:



						"""simple docstring"""






						_UpperCAmelCase			=       StableDiffusionKDiffusionPipeline.from_pretrained('stabilityai/stable-diffusion-2-1-base')
						_UpperCAmelCase			=       sd_pipe.to(__lowerCamelCase)
						sd_pipe.set_progress_bar_config(disable=__lowerCamelCase)

						sd_pipe.set_scheduler('sample_dpmpp_2m')

						_UpperCAmelCase			=       'A painting of a squirrel eating a burger'
						_UpperCAmelCase			=       torch.manual_seed(0)
						_UpperCAmelCase			=       sd_pipe(
						    [prompt]			,		generator=__lowerCamelCase			,		guidance_scale=7.5			,		num_inference_steps=15			,		output_type='np'			,		use_karras_sigmas=__lowerCamelCase			,		)

						_UpperCAmelCase			=       output.images

						_UpperCAmelCase			=       image[0, -3:, -3:, -1]

						assert image.shape == (1, 5_12, 5_12, 3)
						_UpperCAmelCase			=       np.array(
						    [0.1_1_3_8_1_6_8_9, 0.1_2_1_1_2_9_2_1, 0.1_3_8_9_4_5_7, 0.1_2_5_4_9_6_0_6, 0.1_2_4_4_9_6_4, 0.1_0_8_3_1_5_1_7, 0.1_1_5_6_2_8_6_6, 0.1_0_8_6_7_8_1_6, 0.1_0_4_9_9_0_4_8])

						assert np.abs(image_slice.flatten() - expected_slice).max() < 1E-2











from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
    is_vision_available,
)


UpperCAmelCase__       =	{
    "configuration_clip": [
        "CLIP_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "CLIPConfig",
        "CLIPOnnxConfig",
        "CLIPTextConfig",
        "CLIPVisionConfig",
    ],
    "processing_clip": ["CLIPProcessor"],
    "tokenization_clip": ["CLIPTokenizer"],
}

try:
							if not is_tokenizers_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase__       =	["CLIPTokenizerFast"]

try:
							if not is_vision_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase__       =	["CLIPFeatureExtractor"]
							UpperCAmelCase__       =	["CLIPImageProcessor"]

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase__       =	[
							    "CLIP_PRETRAINED_MODEL_ARCHIVE_LIST",
							    "CLIPModel",
							    "CLIPPreTrainedModel",
							    "CLIPTextModel",
							    "CLIPTextModelWithProjection",
							    "CLIPVisionModel",
							    "CLIPVisionModelWithProjection",
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase__       =	[
							    "TF_CLIP_PRETRAINED_MODEL_ARCHIVE_LIST",
							    "TFCLIPModel",
							    "TFCLIPPreTrainedModel",
							    "TFCLIPTextModel",
							    "TFCLIPVisionModel",
							]

try:
							if not is_flax_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase__       =	[
							    "FlaxCLIPModel",
							    "FlaxCLIPPreTrainedModel",
							    "FlaxCLIPTextModel",
							    "FlaxCLIPTextPreTrainedModel",
							    "FlaxCLIPVisionModel",
							    "FlaxCLIPVisionPreTrainedModel",
							]


if TYPE_CHECKING:
							from .configuration_clip import (
							    CLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
							    CLIPConfig,
							    CLIPOnnxConfig,
							    CLIPTextConfig,
							    CLIPVisionConfig,
							)
							from .processing_clip import CLIPProcessor
							from .tokenization_clip import CLIPTokenizer

							try:
														if not is_tokenizers_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .tokenization_clip_fast import CLIPTokenizerFast

							try:
														if not is_vision_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .feature_extraction_clip import CLIPFeatureExtractor
														from .image_processing_clip import CLIPImageProcessor

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_clip import (
														    CLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
														    CLIPModel,
														    CLIPPreTrainedModel,
														    CLIPTextModel,
														    CLIPTextModelWithProjection,
														    CLIPVisionModel,
														    CLIPVisionModelWithProjection,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_clip import (
														    TF_CLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
														    TFCLIPModel,
														    TFCLIPPreTrainedModel,
														    TFCLIPTextModel,
														    TFCLIPVisionModel,
														)

							try:
														if not is_flax_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_flax_clip import (
														    FlaxCLIPModel,
														    FlaxCLIPPreTrainedModel,
														    FlaxCLIPTextModel,
														    FlaxCLIPTextPreTrainedModel,
														    FlaxCLIPVisionModel,
														    FlaxCLIPVisionPreTrainedModel,
														)


else:
							import sys

							UpperCAmelCase__       =	_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)
