'''simple docstring'''





import gc
import tempfile
import unittest

import numpy as np
import torch

from diffusers import VersatileDiffusionTextToImagePipeline
from diffusers.utils.testing_utils import nightly, require_torch_gpu, torch_device


_lowerCAmelCase  :List[Any]  				=    False






class 				UpperCAmelCase (       unittest.TestCase ):




    '''simple docstring'''







    pass






@nightly
@require_torch_gpu
class 				UpperCAmelCase (       unittest.TestCase ):




    '''simple docstring'''







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






    def       _UpperCamelCase    (       self )							-> Tuple:
         SCREAMING_SNAKE_CASE					:			Dict    	=       VersatileDiffusionTextToImagePipeline.from_pretrained('shi-labs/versatile-diffusion' )
         # remove text_unet
         pipe.remove_unused_weights()
         pipe.to(lowercase__ )
         pipe.set_progress_bar_config(disable=lowercase__ )

         SCREAMING_SNAKE_CASE					:			Union[str, Any]    	=       'A painting of a squirrel eating a burger '
         SCREAMING_SNAKE_CASE					:			List[Any]    	=       torch.manual_seed(0 )
         SCREAMING_SNAKE_CASE					:			Union[str, Any]    	=       pipe(
             prompt=lowercase__    ,							generator=lowercase__    ,							guidance_scale=7.5    ,							num_inference_steps=2    ,							output_type='numpy' ).images

         with tempfile.TemporaryDirectory() as tmpdirname:
              pipe.save_pretrained(lowercase__ )
              SCREAMING_SNAKE_CASE					:			int    	=       VersatileDiffusionTextToImagePipeline.from_pretrained(lowercase__ )
         pipe.to(lowercase__ )
         pipe.set_progress_bar_config(disable=lowercase__ )

         SCREAMING_SNAKE_CASE					:			List[str]    	=       generator.manual_seed(0 )
         SCREAMING_SNAKE_CASE					:			List[str]    	=       pipe(
             prompt=lowercase__    ,							generator=lowercase__    ,							guidance_scale=7.5    ,							num_inference_steps=2    ,							output_type='numpy' ).images

         assert np.abs(image - new_image ).sum() < 1E-5, "Models don't have the same forward pass"






    def       _UpperCamelCase    (       self )							-> Any:
         SCREAMING_SNAKE_CASE					:			Optional[Any]    	=       VersatileDiffusionTextToImagePipeline.from_pretrained(
             'shi-labs/versatile-diffusion'    ,							torch_dtype=torch.floataa )
         pipe.to(lowercase__ )
         pipe.set_progress_bar_config(disable=lowercase__ )

         SCREAMING_SNAKE_CASE					:			int    	=       'A painting of a squirrel eating a burger '
         SCREAMING_SNAKE_CASE					:			Tuple    	=       torch.manual_seed(0 )
         SCREAMING_SNAKE_CASE					:			Tuple    	=       pipe(
             prompt=lowercase__    ,							generator=lowercase__    ,							guidance_scale=7.5    ,							num_inference_steps=50    ,							output_type='numpy' ).images

         SCREAMING_SNAKE_CASE					:			Dict    	=       image[0, 253:256, 253:256, -1]

         assert image.shape == (1, 512, 512, 3)
         SCREAMING_SNAKE_CASE					:			Optional[Any]    	=       np.array([0.3_3_6_7, 0.3_1_6_9, 0.2_6_5_6, 0.3_8_7_0, 0.4_7_9_0, 0.3_7_9_6, 0.4_0_0_9, 0.4_8_7_8, 0.4_7_7_8] )

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




'''simple docstring'''





import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch


if is_torch_available():
 import torch

 from transformers.activations import gelu_new, gelu_python, get_activation






@require_torch
class 				UpperCAmelCase (       unittest.TestCase ):




    '''simple docstring'''







    def       _UpperCamelCase    (       self )							-> int:
         SCREAMING_SNAKE_CASE					:			str    	=       torch.tensor([-100, -1, -0.1, 0, 0.1, 1.0, 100] )
         SCREAMING_SNAKE_CASE					:			str    	=       get_activation('gelu' )
         self.assertTrue(torch.allclose(gelu_python(lowercase__ )    ,							torch_builtin(lowercase__ ) ) )
         self.assertFalse(torch.allclose(gelu_python(lowercase__ )    ,							gelu_new(lowercase__ ) ) )






    def       _UpperCamelCase    (       self )							-> Optional[Any]:
         SCREAMING_SNAKE_CASE					:			Union[str, Any]    	=       torch.tensor([-100, -1, -0.1, 0, 0.1, 1.0, 100] )
         SCREAMING_SNAKE_CASE					:			str    	=       get_activation('gelu' )
         SCREAMING_SNAKE_CASE					:			Dict    	=       get_activation('gelu_10' )

         SCREAMING_SNAKE_CASE					:			Optional[int]    	=       torch_builtin(lowercase__ )
         SCREAMING_SNAKE_CASE					:			str    	=       geluaa(lowercase__ )

         SCREAMING_SNAKE_CASE					:			List[Any]    	=       torch.where(y_gelu_aa < 1_0.0    ,							1    ,							0 )

         self.assertTrue(torch.max(lowercase__ ).item() == 1_0.0 )
         self.assertTrue(torch.allclose(y_gelu * clipped_mask    ,							y_gelu_aa * clipped_mask ) )






    def       _UpperCamelCase    (       self )							-> Optional[Any]:
         get_activation('gelu' )
         get_activation('gelu_10' )
         get_activation('gelu_fast' )
         get_activation('gelu_new' )
         get_activation('gelu_python' )
         get_activation('gelu_pytorch_tanh' )
         get_activation('linear' )
         get_activation('mish' )
         get_activation('quick_gelu' )
         get_activation('relu' )
         get_activation('sigmoid' )
         get_activation('silu' )
         get_activation('swish' )
         get_activation('tanh' )
         with self.assertRaises(lowercase__ ):
              get_activation('bogus' )
         with self.assertRaises(lowercase__ ):
              get_activation(lowercase__ )






    def       _UpperCamelCase    (       self )							-> int:
         SCREAMING_SNAKE_CASE					:			Optional[int]    	=       get_activation('gelu' )
         SCREAMING_SNAKE_CASE					:			str    	=       1
         SCREAMING_SNAKE_CASE					:			List[str]    	=       get_activation('gelu' )
         self.assertEqual(acta.a    ,							1 )
         with self.assertRaises(lowercase__ ):
              SCREAMING_SNAKE_CASE					:			Dict    	=       acta.a



