
"""simple docstring"""




import gc
import tempfile
import unittest

import numpy as np
import torch

from diffusers import VersatileDiffusionPipeline
from diffusers.utils.testing_utils import load_image, nightly, require_torch_gpu, torch_device


A__   :					Any							=   False


class 			lowercase_       (       unittest.TestCase ):
       pass


@nightly
@require_torch_gpu
class 			lowercase_       (       unittest.TestCase ):
       def 							lowercase_							(     self       )     ->	Union[str, Any]:





         """simple docstring"""




         super().tearDown()
         gc.collect()
         torch.cuda.empty_cache()
       def 							lowercase_							(     self       )     ->	Tuple:





         """simple docstring"""




         _lowercase:			List[str]       =     VersatileDiffusionPipeline.from_pretrained('''shi-labs/versatile-diffusion''' ,				torch_dtype=torch.floataa       )
         pipe.to(A_       )
         pipe.set_progress_bar_config(disable=A_       )

         _lowercase:			Any       =     load_image(
             '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg'''       )

         _lowercase:			str       =     torch.manual_seed(0       )
         _lowercase:			Any       =     pipe.dual_guided(
             prompt='''first prompt''' ,				image=A_ ,				text_to_image_strength=0.75 ,				generator=A_ ,				guidance_scale=7.5 ,				num_inference_steps=2 ,				output_type='''numpy''' ,				).images

         with tempfile.TemporaryDirectory() as tmpdirname:
           pipe.save_pretrained(A_       )
           _lowercase:			Union[str, Any]       =     VersatileDiffusionPipeline.from_pretrained(A_ ,				torch_dtype=torch.floataa       )
         pipe.to(A_       )
         pipe.set_progress_bar_config(disable=A_       )

         _lowercase:			Optional[int]       =     generator.manual_seed(0       )
         _lowercase:			Optional[int]       =     pipe.dual_guided(
             prompt='''first prompt''' ,				image=A_ ,				text_to_image_strength=0.75 ,				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 							lowercase_							(     self       )     ->	List[Any]:





         """simple docstring"""




         _lowercase:			int       =     VersatileDiffusionPipeline.from_pretrained('''shi-labs/versatile-diffusion''' ,				torch_dtype=torch.floataa       )
         pipe.to(A_       )
         pipe.set_progress_bar_config(disable=A_       )

         _lowercase:			Tuple       =     '''cyberpunk 2077'''
         _lowercase:			Dict       =     load_image(
             '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg'''       )
         _lowercase:			Union[str, Any]       =     torch.manual_seed(0       )
         _lowercase:			Union[str, Any]       =     pipe.dual_guided(
             prompt=A_ ,				image=A_ ,				text_to_image_strength=0.75 ,				generator=A_ ,				guidance_scale=7.5 ,				num_inference_steps=50 ,				output_type='''numpy''' ,				).images

         _lowercase:			List[Any]       =     image[0, 253:256, 253:256, -1]

         assert image.shape == (1, 512, 512, 3)
         _lowercase:			Dict       =     np.array([0.14_48, 0.16_19, 0.17_41, 0.10_86, 0.11_47, 0.11_28, 0.11_99, 0.11_65, 0.10_01]       )

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

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

         _lowercase:			int       =     image[0, 253:256, 253:256, -1]

         assert image.shape == (1, 512, 512, 3)
         _lowercase:			Dict       =     np.array([0.33_67, 0.31_69, 0.26_56, 0.38_70, 0.47_90, 0.37_96, 0.40_09, 0.48_78, 0.47_78]       )

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

         _lowercase:			Optional[int]       =     pipe.image_variation(A_ ,				generator=A_ ,				output_type='''numpy'''       ).images

         _lowercase:			List[Any]       =     image[0, 253:256, 253:256, -1]

         assert image.shape == (1, 512, 512, 3)
         _lowercase:			Optional[int]       =     np.array([0.30_76, 0.31_23, 0.32_84, 0.37_82, 0.37_70, 0.38_94, 0.42_97, 0.43_31, 0.44_56]       )

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


"""simple docstring"""




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number | (1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number & ~(1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number ^ (1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return ((number >> position) & 1) == 1




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return int((number & (1 << position)) != 0						)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
