



"""simple docstring"""
import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()


class    SCREAMING_SNAKE_CASE__ (							unittest.TestCase   ):

    @property
    def 					_UpperCAmelCase	(				self			:				Optional[Any]):







      """simple docstring"""







      torch.manual_seed(0)
      lowercase_								= UNetaDModel(
          block_out_channels=(3_2, 6_4) ,  layers_per_block=2 ,  sample_size=3_2 ,  in_channels=3 ,  out_channels=3 ,  down_block_types=("""DownBlock2D""", """AttnDownBlock2D""") ,  up_block_types=("""AttnUpBlock2D""", """UpBlock2D""") ,  )
      return model

    @property
    def 					_UpperCAmelCase	(				self			:				str):







      """simple docstring"""







      torch.manual_seed(0)
      lowercase_								= VQModel(
          block_out_channels=[3_2, 6_4] ,  in_channels=3 ,  out_channels=3 ,  down_block_types=["""DownEncoderBlock2D""", """DownEncoderBlock2D"""] ,  up_block_types=["""UpDecoderBlock2D""", """UpDecoderBlock2D"""] ,  latent_channels=3 ,  )
      return model

    @property
    def 					_UpperCAmelCase	(				self			:				Union[str, Any]):







      """simple docstring"""







      torch.manual_seed(0)
      lowercase_								= CLIPTextConfig(
          bos_token_id=0 ,  eos_token_id=2 ,  hidden_size=3_2 ,  intermediate_size=3_7 ,  layer_norm_eps=1E-05 ,  num_attention_heads=4 ,  num_hidden_layers=5 ,  pad_token_id=1 ,  vocab_size=1_0_0_0 ,  )
      return CLIPTextModel(lowerCAmelCase_)




    def 					_UpperCAmelCase	(				self			:				Dict):







      """simple docstring"""







      lowercase_								= self.dummy_uncond_unet
      lowercase_								= DDIMScheduler()
      lowercase_								= self.dummy_vq_model

      lowercase_								= LDMPipeline(unet=lowerCAmelCase_ ,  vqvae=lowerCAmelCase_ ,  scheduler=lowerCAmelCase_)
      ldm.to(lowerCAmelCase_)
      ldm.set_progress_bar_config(disable=lowerCAmelCase_)

      lowercase_								= torch.manual_seed(0)
      lowercase_								= ldm(generator=lowerCAmelCase_ ,  num_inference_steps=2 ,  output_type="""numpy""").images

      lowercase_								= torch.manual_seed(0)
      lowercase_								= ldm(generator=lowerCAmelCase_ ,  num_inference_steps=2 ,  output_type="""numpy""" ,  return_dict=lowerCAmelCase_)[0]

      lowercase_								= image[0, -3:, -3:, -1]
      lowercase_								= image_from_tuple[0, -3:, -3:, -1]

      assert image.shape == (1, 6_4, 6_4, 3)
      lowercase_								= np.array([0.8_512, 0.818, 0.6_411, 0.6_808, 0.4_465, 0.5_618, 0.46, 0.6_231, 0.5_172])
      lowercase_								= 1E-2 if torch_device != """mps""" else 3E-2

      assert np.abs(image_slice.flatten() - expected_slice).max() < tolerance
      assert np.abs(image_from_tuple_slice.flatten() - expected_slice).max() < tolerance







@slow
@require_torch
class    SCREAMING_SNAKE_CASE__ (							unittest.TestCase   ):

    def 					_UpperCAmelCase	(				self			:				Dict):







      """simple docstring"""







      lowercase_								= LDMPipeline.from_pretrained("""CompVis/ldm-celebahq-256""")
      ldm.to(lowerCAmelCase_)
      ldm.set_progress_bar_config(disable=lowerCAmelCase_)

      lowercase_								= torch.manual_seed(0)
      lowercase_								= ldm(generator=lowerCAmelCase_ ,  num_inference_steps=5 ,  output_type="""numpy""").images

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

      assert image.shape == (1, 2_5_6, 2_5_6, 3)
      lowercase_								= np.array([0.4_399, 0.44_975, 0.46_825, 0.474, 0.4_359, 0.4_581, 0.45_095, 0.4_341, 0.4_447])
      lowercase_								= 1E-2 if torch_device != """mps""" else 3E-2

      assert np.abs(image_slice.flatten() - expected_slice).max() < tolerance






"""simple docstring"""
from typing import TYPE_CHECKING

from ...utils import _LazyModule


UpperCAmelCase						:		List[Any]			= {"tokenization_bertweet": ["BertweetTokenizer"]}


if TYPE_CHECKING:
       from .tokenization_bertweet import BertweetTokenizer

else:
       import sys

       UpperCAmelCase						:		Tuple			= _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)

