


"""simple docstring"""






import gc
import unittest

import numpy as np
import torch

from diffusers import (
    AudioDiffusionPipeline,
    AutoencoderKL,
    DDIMScheduler,
    DDPMScheduler,
    DiffusionPipeline,
    Mel,
    UNetaDConditionModel,
    UNetaDModel,
)
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()







class     __lowerCamelCase  (					unittest.TestCase				):

     '''simple docstring'''


     def 							_UpperCAmelCase      (      self							)       ->							int:
          # clean up the VRAM after each test
          super().tearDown()
          gc.collect()
          torch.cuda.empty_cache()


     @property
     def 							_UpperCAmelCase      (      self							)       ->							str:
          torch.manual_seed(0							)
          _a    	=				UNetaDModel(
              sample_size=(32, 64)    ,				in_channels=1    ,				out_channels=1    ,				layers_per_block=2    ,				block_out_channels=(128, 128)    ,				down_block_types=('''AttnDownBlock2D''', '''DownBlock2D''')    ,				up_block_types=('''UpBlock2D''', '''AttnUpBlock2D''')    ,				)
          return model


     @property
     def 							_UpperCAmelCase      (      self							)       ->							Any:
          torch.manual_seed(0							)
          _a    	=				UNetaDConditionModel(
              sample_size=(64, 32)    ,				in_channels=1    ,				out_channels=1    ,				layers_per_block=2    ,				block_out_channels=(128, 128)    ,				down_block_types=('''CrossAttnDownBlock2D''', '''DownBlock2D''')    ,				up_block_types=('''UpBlock2D''', '''CrossAttnUpBlock2D''')    ,				cross_attention_dim=10    ,				)
          return model


     @property
     def 							_UpperCAmelCase      (      self							)       ->							str:
          torch.manual_seed(0							)
          _a    	=				AutoencoderKL(
              sample_size=(128, 64)    ,				in_channels=1    ,				out_channels=1    ,				latent_channels=1    ,				layers_per_block=2    ,				block_out_channels=(128, 128)    ,				down_block_types=('''DownEncoderBlock2D''', '''DownEncoderBlock2D''')    ,				up_block_types=('''UpDecoderBlock2D''', '''UpDecoderBlock2D''')    ,				)
          _a    	=				UNetaDModel(
              sample_size=(64, 32)    ,				in_channels=1    ,				out_channels=1    ,				layers_per_block=2    ,				block_out_channels=(128, 128)    ,				down_block_types=('''AttnDownBlock2D''', '''DownBlock2D''')    ,				up_block_types=('''UpBlock2D''', '''AttnUpBlock2D''')    ,				)
          return vqvae, unet





     @slow
     def 							_UpperCAmelCase      (      self							)       ->							int:
          _a    	=				'''cpu'''  # ensure determinism for the device-dependent torch.Generator
          _a    	=				Mel(
              x_res=self.dummy_unet.config.sample_size[1]    ,				y_res=self.dummy_unet.config.sample_size[0]    ,				)

          _a    	=				DDPMScheduler()
          _a    	=				AudioDiffusionPipeline(vqvae=__UpperCAmelCase    ,				unet=self.dummy_unet    ,				mel=__UpperCAmelCase    ,				scheduler=__UpperCAmelCase							)
          _a    	=				pipe.to(__UpperCAmelCase							)
          pipe.set_progress_bar_config(disable=__UpperCAmelCase							)

          _a    	=				torch.Generator(device=__UpperCAmelCase							).manual_seed(42							)
          _a    	=				pipe(generator=__UpperCAmelCase    ,				steps=4							)
          _a    	=				output.audios[0]
          _a    	=				output.images[0]

          _a    	=				torch.Generator(device=__UpperCAmelCase							).manual_seed(42							)
          _a    	=				pipe(generator=__UpperCAmelCase    ,				steps=4    ,				return_dict=__UpperCAmelCase							)
          _a    	=				output[0][0]

          assert audio.shape == (1, (self.dummy_unet.config.sample_size[1] - 1) * mel.hop_length)
          assert (
              image.height == self.dummy_unet.config.sample_size[0]
              and image.width == self.dummy_unet.config.sample_size[1]
          )
          _a    	=				np.frombuffer(image.tobytes()    ,				dtype='''uint8'''							)[:10]
          _a    	=				np.frombuffer(image_from_tuple.tobytes()    ,				dtype='''uint8'''							)[:10]
          _a    	=				np.array([69, 255, 255, 255, 0, 0, 77, 181, 12, 127]							)

          assert np.abs(image_slice.flatten() - expected_slice							).max() == 0
          assert np.abs(image_from_tuple_slice.flatten() - expected_slice							).max() == 0

          _a    	=				Mel(
              x_res=self.dummy_vqvae_and_unet[0].config.sample_size[1]    ,				y_res=self.dummy_vqvae_and_unet[0].config.sample_size[0]    ,				)

          _a    	=				DDIMScheduler()
          _a    	=				self.dummy_vqvae_and_unet
          _a    	=				AudioDiffusionPipeline(
              vqvae=self.dummy_vqvae_and_unet[0]    ,				unet=dummy_vqvae_and_unet[1]    ,				mel=__UpperCAmelCase    ,				scheduler=__UpperCAmelCase							)
          _a    	=				pipe.to(__UpperCAmelCase							)
          pipe.set_progress_bar_config(disable=__UpperCAmelCase							)

          np.random.seed(0							)
          _a    	=				np.random.uniform(-1    ,				1    ,				((dummy_vqvae_and_unet[0].config.sample_size[1] - 1) * mel.hop_length,)							)
          _a    	=				torch.Generator(device=__UpperCAmelCase							).manual_seed(42							)
          _a    	=				pipe(raw_audio=__UpperCAmelCase    ,				generator=__UpperCAmelCase    ,				start_step=5    ,				steps=10							)
          _a    	=				output.images[0]

          assert (
              image.height == self.dummy_vqvae_and_unet[0].config.sample_size[0]
              and image.width == self.dummy_vqvae_and_unet[0].config.sample_size[1]
          )
          _a    	=				np.frombuffer(image.tobytes()    ,				dtype='''uint8'''							)[:10]
          _a    	=				np.array([120, 117, 110, 109, 138, 167, 138, 148, 132, 121]							)

          assert np.abs(image_slice.flatten() - expected_slice							).max() == 0

          _a    	=				self.dummy_unet_condition
          _a    	=				AudioDiffusionPipeline(
              vqvae=self.dummy_vqvae_and_unet[0]    ,				unet=__UpperCAmelCase    ,				mel=__UpperCAmelCase    ,				scheduler=__UpperCAmelCase							)
          _a    	=				pipe.to(__UpperCAmelCase							)
          pipe.set_progress_bar_config(disable=__UpperCAmelCase							)

          np.random.seed(0							)
          _a    	=				torch.rand((1, 1, 10)							)
          _a    	=				pipe(generator=__UpperCAmelCase    ,				encoding=__UpperCAmelCase							)
          _a    	=				output.images[0]
          _a    	=				np.frombuffer(image.tobytes()    ,				dtype='''uint8'''							)[:10]
          _a    	=				np.array([107, 103, 120, 127, 142, 122, 113, 122, 97, 111]							)

          assert np.abs(image_slice.flatten() - expected_slice							).max() == 0







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

     '''simple docstring'''


     def 							_UpperCAmelCase      (      self							)       ->							str:
          # clean up the VRAM after each test
          super().tearDown()
          gc.collect()
          torch.cuda.empty_cache()





     def 							_UpperCAmelCase      (      self							)       ->							Any:
          _a    	=				torch_device

          _a    	=				DiffusionPipeline.from_pretrained('''teticio/audio-diffusion-ddim-256'''							)
          _a    	=				pipe.to(__UpperCAmelCase							)
          pipe.set_progress_bar_config(disable=__UpperCAmelCase							)

          _a    	=				torch.Generator(device=__UpperCAmelCase							).manual_seed(42							)
          _a    	=				pipe(generator=__UpperCAmelCase							)
          _a    	=				output.audios[0]
          _a    	=				output.images[0]

          assert audio.shape == (1, (pipe.unet.config.sample_size[1] - 1) * pipe.mel.hop_length)
          assert image.height == pipe.unet.config.sample_size[0] and image.width == pipe.unet.config.sample_size[1]
          _a    	=				np.frombuffer(image.tobytes()    ,				dtype='''uint8'''							)[:10]
          _a    	=				np.array([151, 167, 154, 144, 122, 134, 121, 105, 70, 26]							)

          assert np.abs(image_slice.flatten() - expected_slice							).max() == 0



"""simple docstring"""






from .glue import glue_convert_examples_to_features, glue_output_modes, glue_processors, glue_tasks_num_labels
from .squad import SquadExample, SquadFeatures, SquadVaProcessor, SquadVaProcessor, squad_convert_examples_to_features
from .utils import DataProcessor, InputExample, InputFeatures, SingleSentenceClassificationProcessor
from .xnli import xnli_output_modes, xnli_processors, xnli_tasks_num_labels