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     a_			(						unittest.TestCase						):






 '''simple docstring'''






 @property
 def 		__snake_case						(      self :  int):







        '''simple docstring'''



        torch.manual_seed(0)
        lowerCAmelCase__					     = UNetaDModel(
            block_out_channels=(32, 64)      ,   layers_per_block=2      ,   sample_size=32      ,   in_channels=3      ,   out_channels=3      ,   down_block_types=('DownBlock2D', 'AttnDownBlock2D')      ,   up_block_types=('AttnUpBlock2D', 'UpBlock2D')      ,   )
        return model




 @property
 def 		__snake_case						(      self :  List[Any]):







        '''simple docstring'''



        torch.manual_seed(0)
        lowerCAmelCase__					     = VQModel(
            block_out_channels=[32, 64]      ,   in_channels=3      ,   out_channels=3      ,   down_block_types=['DownEncoderBlock2D', 'DownEncoderBlock2D']      ,   up_block_types=['UpDecoderBlock2D', 'UpDecoderBlock2D']      ,   latent_channels=3      ,   )
        return model




 @property
 def 		__snake_case						(      self :  Tuple):







        '''simple docstring'''



        torch.manual_seed(0)
        lowerCAmelCase__					     = CLIPTextConfig(
            bos_token_id=0      ,   eos_token_id=2      ,   hidden_size=32      ,   intermediate_size=37      ,   layer_norm_eps=1e-05      ,   num_attention_heads=4      ,   num_hidden_layers=5      ,   pad_token_id=1      ,   vocab_size=1_000      ,   )
        return CLIPTextModel(lowercase__)




 def 		__snake_case						(      self :  Any):







        '''simple docstring'''



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

        lowerCAmelCase__					     = LDMPipeline(unet=lowercase__      ,   vqvae=lowercase__      ,   scheduler=lowercase__)
        ldm.to(lowercase__)
        ldm.set_progress_bar_config(disable=lowercase__)

        lowerCAmelCase__					     = torch.manual_seed(0)
        lowerCAmelCase__					     = ldm(generator=lowercase__      ,   num_inference_steps=2      ,   output_type='numpy').images

        lowerCAmelCase__					     = torch.manual_seed(0)
        lowerCAmelCase__					     = ldm(generator=lowercase__      ,   num_inference_steps=2      ,   output_type='numpy'      ,   return_dict=lowercase__)[0]

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

        assert image.shape == (1, 64, 64, 3)
        lowerCAmelCase__					     = 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])
        lowerCAmelCase__					     = 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     a_			(						unittest.TestCase						):






 '''simple docstring'''






 def 		__snake_case						(      self :  Union[str, Any]):







        '''simple docstring'''



        lowerCAmelCase__					     = LDMPipeline.from_pretrained('CompVis/ldm-celebahq-256')
        ldm.to(lowercase__)
        ldm.set_progress_bar_config(disable=lowercase__)

        lowerCAmelCase__					     = torch.manual_seed(0)
        lowerCAmelCase__					     = ldm(generator=lowercase__      ,   num_inference_steps=5      ,   output_type='numpy').images

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

        assert image.shape == (1, 256, 256, 3)
        lowerCAmelCase__					     = 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])
        lowerCAmelCase__					     = 1e-2 if torch_device != 'mps' else 3e-2

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

from collections import OrderedDict
from typing import Mapping

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


lowerCAmelCase__     						=			logging.get_logger(__name__)

lowerCAmelCase__     						=			{
    'facebook/xlm-roberta-xl': 'https://huggingface.co/facebook/xlm-roberta-xl/resolve/main/config.json',
    'facebook/xlm-roberta-xxl': 'https://huggingface.co/facebook/xlm-roberta-xxl/resolve/main/config.json',
    # See all XLM-RoBERTa-XL models at https://huggingface.co/models?filter=xlm-roberta-xl
}
class     a_			(						SCREAMING_SNAKE_CASE						):






 '''simple docstring'''






 UpperCAmelCase_     			= 'xlm-roberta-xl'




 def __init__(      self :  int      ,   lowercase__ :  Optional[int]=250_880      ,   lowercase__ :  Union[str, Any]=2_560      ,   lowercase__ :  int=36      ,   lowercase__ :  int=32      ,   lowercase__ :  List[Any]=10_240      ,   lowercase__ :  Union[str, Any]="gelu"      ,   lowercase__ :  Dict=0.1      ,   lowercase__ :  Any=0.1      ,   lowercase__ :  Any=514      ,   lowercase__ :  Optional[int]=1      ,   lowercase__ :  Any=0.02      ,   lowercase__ :  List[str]=1e-05      ,   lowercase__ :  Dict=1      ,   lowercase__ :  Union[str, Any]=0      ,   lowercase__ :  Dict=2      ,   lowercase__ :  str="absolute"      ,   lowercase__ :  Dict=True      ,   lowercase__ :  List[Any]=None      ,   **lowercase__ :  Optional[Any]      ,   ):







        '''simple docstring'''



        super().__init__(pad_token_id=lowercase__      ,   bos_token_id=lowercase__      ,   eos_token_id=lowercase__      ,   **lowercase__)
        lowerCAmelCase__					     = vocab_size
        lowerCAmelCase__					     = hidden_size
        lowerCAmelCase__					     = num_hidden_layers
        lowerCAmelCase__					     = num_attention_heads
        lowerCAmelCase__					     = hidden_act
        lowerCAmelCase__					     = intermediate_size
        lowerCAmelCase__					     = hidden_dropout_prob
        lowerCAmelCase__					     = attention_probs_dropout_prob
        lowerCAmelCase__					     = max_position_embeddings
        lowerCAmelCase__					     = type_vocab_size
        lowerCAmelCase__					     = initializer_range
        lowerCAmelCase__					     = layer_norm_eps
        lowerCAmelCase__					     = position_embedding_type
        lowerCAmelCase__					     = use_cache
        lowerCAmelCase__					     = classifier_dropout






class     a_			(						SCREAMING_SNAKE_CASE						):






 '''simple docstring'''






 @property
 def 		__snake_case						(      self :  int):







        '''simple docstring'''



        if self.task == "multiple-choice":
               lowerCAmelCase__					     = {0: 'batch', 1: 'choice', 2: 'sequence'}
        else:
               lowerCAmelCase__					     = {0: 'batch', 1: 'sequence'}
        return OrderedDict(
            [
                ('input_ids', dynamic_axis),
                ('attention_mask', dynamic_axis),
            ])
