'''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


UpperCamelCase__     :	Tuple				=			False


class 				_lowercase	(      unittest.TestCase   ):
      '''simple docstring'''


      pass




@nightly
@require_torch_gpu
class 				_lowercase	(      unittest.TestCase   ):
      '''simple docstring'''


      def 		lowerCAmelCase__					(				self							)			->			str:



         '''simple docstring'''



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




      def 		lowerCAmelCase__					(				self							)			->			str:



         '''simple docstring'''



         UpperCAmelCase__							:				List[Any]   				=  VersatileDiffusionTextToImagePipeline.from_pretrained('''shi-labs/versatile-diffusion'''							)
         # remove text_unet
         pipe.remove_unused_weights()
         pipe.to(A_							)
         pipe.set_progress_bar_config(disable=A_							)

         UpperCAmelCase__							:				Optional[Any]   				=  '''A painting of a squirrel eating a burger '''
         UpperCAmelCase__							:				Optional[int]   				=  torch.manual_seed(0							)
         UpperCAmelCase__							:				Dict   				=  pipe(
             prompt=A_					,generator=A_					,guidance_scale=7.5					,num_inference_steps=2					,output_type='''numpy'''							).images

         with tempfile.TemporaryDirectory() as tmpdirname:
            pipe.save_pretrained(A_							)
            UpperCAmelCase__							:				Optional[int]   				=  VersatileDiffusionTextToImagePipeline.from_pretrained(A_							)
         pipe.to(A_							)
         pipe.set_progress_bar_config(disable=A_							)

         UpperCAmelCase__							:				Dict   				=  generator.manual_seed(0							)
         UpperCAmelCase__							:				str   				=  pipe(
             prompt=A_					,generator=A_					,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 		lowerCAmelCase__					(				self							)			->			Any:



         '''simple docstring'''



         UpperCAmelCase__							:				Any   				=  VersatileDiffusionTextToImagePipeline.from_pretrained(
             '''shi-labs/versatile-diffusion'''					,torch_dtype=torch.floataa							)
         pipe.to(A_							)
         pipe.set_progress_bar_config(disable=A_							)

         UpperCAmelCase__							:				int   				=  '''A painting of a squirrel eating a burger '''
         UpperCAmelCase__							:				Any   				=  torch.manual_seed(0							)
         UpperCAmelCase__							:				List[Any]   				=  pipe(
             prompt=A_					,generator=A_					,guidance_scale=7.5					,num_inference_steps=50					,output_type='''numpy'''							).images

         UpperCAmelCase__							:				List[str]   				=  image[0, 253:256, 253:256, -1]

         assert image.shape == (1, 512, 512, 3)
         UpperCAmelCase__							:				Union[str, Any]   				=  np.array([0.3367, 0.3169, 0.2656, 0.3870, 0.4790, 0.3796, 0.4009, 0.4878, 0.4778]							)

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





'''simple docstring'''

from typing import TYPE_CHECKING

from ...utils import _LazyModule


UpperCamelCase__     :	Union[str, Any]				=			{'tokenization_byt5': ['ByT5Tokenizer']}


if TYPE_CHECKING:
  from .tokenization_byta import ByTaTokenizer
else:
  import sys

  UpperCamelCase__     :	List[str]				=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




