
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 ):





     """simple docstring"""







     def    __SCREAMING_SNAKE_CASE			(							self  )  ->   List[Any]:




           """simple docstring"""







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






     def    __SCREAMING_SNAKE_CASE			(							self  )  ->   Tuple:




           """simple docstring"""







           UpperCamelCase__    :   Optional[int]					=				StableDiffusionKDiffusionPipeline.from_pretrained('''CompVis/stable-diffusion-v1-4'''  )
           UpperCamelCase__    :   Optional[int]					=				sd_pipe.to(__SCREAMING_SNAKE_CASE  )
           sd_pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE  )

           sd_pipe.set_scheduler('''sample_euler'''  )

           UpperCamelCase__    :   List[str]					=				'''A painting of a squirrel eating a burger'''
           UpperCamelCase__    :   Tuple					=				torch.manual_seed(0  )
           UpperCamelCase__    :   Any					=				sd_pipe([prompt]						,						generator=__SCREAMING_SNAKE_CASE						,						guidance_scale=9.0						,						num_inference_steps=2_0						,						output_type='''np'''  )

           UpperCamelCase__    :   Optional[int]					=				output.images

           UpperCamelCase__    :   Tuple					=				image[0, -3:, -3:, -1]

           assert image.shape == (1, 5_1_2, 5_1_2, 3)
           UpperCamelCase__    :   List[Any]					=				np.array([0.0447, 0.0492, 0.0468, 0.0408, 0.0383, 0.0408, 0.0354, 0.0380, 0.0339]  )

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






     def    __SCREAMING_SNAKE_CASE			(							self  )  ->   Any:




           """simple docstring"""







           UpperCamelCase__    :   Tuple					=				StableDiffusionKDiffusionPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''  )
           UpperCamelCase__    :   Tuple					=				sd_pipe.to(__SCREAMING_SNAKE_CASE  )
           sd_pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE  )

           sd_pipe.set_scheduler('''sample_euler'''  )

           UpperCamelCase__    :   Optional[Any]					=				'''A painting of a squirrel eating a burger'''
           UpperCamelCase__    :   Optional[Any]					=				torch.manual_seed(0  )
           UpperCamelCase__    :   Any					=				sd_pipe([prompt]						,						generator=__SCREAMING_SNAKE_CASE						,						guidance_scale=9.0						,						num_inference_steps=2_0						,						output_type='''np'''  )

           UpperCamelCase__    :   List[str]					=				output.images

           UpperCamelCase__    :   Optional[int]					=				image[0, -3:, -3:, -1]

           assert image.shape == (1, 5_1_2, 5_1_2, 3)
           UpperCamelCase__    :   Dict					=				np.array([0.1237, 0.1320, 0.1438, 0.1359, 0.1390, 0.1132, 0.1277, 0.1175, 0.1112]  )

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






     def    __SCREAMING_SNAKE_CASE			(							self  )  ->   List[Any]:




           """simple docstring"""







           UpperCamelCase__    :   int					=				StableDiffusionKDiffusionPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''  )
           UpperCamelCase__    :   Union[str, Any]					=				sd_pipe.to(__SCREAMING_SNAKE_CASE  )
           sd_pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE  )

           sd_pipe.set_scheduler('''sample_dpmpp_2m'''  )

           UpperCamelCase__    :   List[str]					=				'''A painting of a squirrel eating a burger'''
           UpperCamelCase__    :   Tuple					=				torch.manual_seed(0  )
           UpperCamelCase__    :   Any					=				sd_pipe(
               [prompt]						,						generator=__SCREAMING_SNAKE_CASE						,						guidance_scale=7.5						,						num_inference_steps=1_5						,						output_type='''np'''						,						use_karras_sigmas=__SCREAMING_SNAKE_CASE						,						)

           UpperCamelCase__    :   Tuple					=				output.images

           UpperCamelCase__    :   Any					=				image[0, -3:, -3:, -1]

           assert image.shape == (1, 5_1_2, 5_1_2, 3)
           UpperCamelCase__    :   Dict					=				np.array(
               [0.11381689, 0.12112921, 0.1389457, 0.12549606, 0.1244964, 0.10831517, 0.11562866, 0.10867816, 0.10499048]  )

           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,
)


lowerCamelCase      ={
    "configuration_blenderbot": [
        "BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "BlenderbotConfig",
        "BlenderbotOnnxConfig",
    ],
    "tokenization_blenderbot": ["BlenderbotTokenizer"],
}

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

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    lowerCamelCase      =[
        "BLENDERBOT_PRETRAINED_MODEL_ARCHIVE_LIST",
        "BlenderbotForCausalLM",
        "BlenderbotForConditionalGeneration",
        "BlenderbotModel",
        "BlenderbotPreTrainedModel",
    ]


try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    lowerCamelCase      =[
        "TFBlenderbotForConditionalGeneration",
        "TFBlenderbotModel",
        "TFBlenderbotPreTrainedModel",
    ]


try:
    if not is_flax_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    lowerCamelCase      =[
        "FlaxBlenderbotForConditionalGeneration",
        "FlaxBlenderbotModel",
        "FlaxBlenderbotPreTrainedModel",
    ]


if TYPE_CHECKING:
    from .configuration_blenderbot import (
        BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP,
        BlenderbotConfig,
        BlenderbotOnnxConfig,
    )
    from .tokenization_blenderbot import BlenderbotTokenizer

    try:
        if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .tokenization_blenderbot_fast import BlenderbotTokenizerFast

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_blenderbot import (
            BLENDERBOT_PRETRAINED_MODEL_ARCHIVE_LIST,
            BlenderbotForCausalLM,
            BlenderbotForConditionalGeneration,
            BlenderbotModel,
            BlenderbotPreTrainedModel,
        )

    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_blenderbot import (
            TFBlenderbotForConditionalGeneration,
            TFBlenderbotModel,
            TFBlenderbotPreTrainedModel,
        )

    try:
        if not is_flax_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_flax_blenderbot import (
            FlaxBlenderbotForConditionalGeneration,
            FlaxBlenderbotModel,
            FlaxBlenderbotPreTrainedModel,
        )

else:
    import sys

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


