


import gc
import tempfile
import unittest

import numpy as np
import torch

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


lowercase_							 =       False







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







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






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







				def     lowerCamelCase_    (   self      ):

					'''simple docstring'''






					lowerCAmelCase_			       = VersatileDiffusionDualGuidedPipeline.from_pretrained('''shi-labs/versatile-diffusion'''      )
					# remove text_unet
					pipe.remove_unused_weights()
					pipe.to(UpperCAmelCase      )
					pipe.set_progress_bar_config(disable=UpperCAmelCase      )

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

					lowerCAmelCase_			       = torch.manual_seed(0      )
					lowerCAmelCase_			       = pipe(
					    prompt='''first prompt'''			,  image=UpperCAmelCase			,  text_to_image_strength=0.7_5			,  generator=UpperCAmelCase			,  guidance_scale=7.5			,  num_inference_steps=2			,  output_type='''numpy'''			,  ).images

					with tempfile.TemporaryDirectory() as tmpdirname:
						pipe.save_pretrained(UpperCAmelCase      )
						lowerCAmelCase_			       = VersatileDiffusionDualGuidedPipeline.from_pretrained(UpperCAmelCase      )

					pipe.to(UpperCAmelCase      )
					pipe.set_progress_bar_config(disable=UpperCAmelCase      )

					lowerCAmelCase_			       = generator.manual_seed(0      )
					lowerCAmelCase_			       = pipe(
					    prompt='''first prompt'''			,  image=UpperCAmelCase			,  text_to_image_strength=0.7_5			,  generator=UpperCAmelCase			,  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      ):

					'''simple docstring'''






					lowerCAmelCase_			       = VersatileDiffusionDualGuidedPipeline.from_pretrained('''shi-labs/versatile-diffusion'''      )
					pipe.remove_unused_weights()
					pipe.to(UpperCAmelCase      )
					pipe.set_progress_bar_config(disable=UpperCAmelCase      )

					lowerCAmelCase_			       = '''cyberpunk 2077'''
					lowerCAmelCase_			       = load_image(
					    '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg'''      )
					lowerCAmelCase_			       = torch.manual_seed(0      )
					lowerCAmelCase_			       = pipe(
					    prompt=UpperCAmelCase			,  image=UpperCAmelCase			,  text_to_image_strength=0.7_5			,  generator=UpperCAmelCase			,  guidance_scale=7.5			,  num_inference_steps=50			,  output_type='''numpy'''			,  ).images

					lowerCAmelCase_			       = image[0, 253:256, 253:256, -1]

					assert image.shape == (1, 512, 512, 3)
					lowerCAmelCase_			       = np.array([0.0_7_8_7, 0.0_8_4_9, 0.0_8_2_6, 0.0_8_1_2, 0.0_8_0_7, 0.0_7_9_5, 0.0_8_1_8, 0.0_7_9_8, 0.0_7_7_9]      )

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



"""simple docstring"""



import doctest

import projectq
from projectq.ops import H, Measure
def     UpperCAmelCase    (					_lowercase   :      projectq.cengines._main.MainEngine  )	->   int:


	"""simple docstring"""




	lowerCAmelCase_			       = quantum_engine.allocate_qubit()
	H | qubit
	Measure | qubit
	return int(_lowercase  )


if __name__ == "__main__":
		doctest.testmod()

		# initialises a new quantum backend
		lowercase_							 =       projectq.MainEngine()

		# Generate a list of 10 random numbers
		lowercase_							 =       [get_random_number(quantum_engine) for _ in range(10)]

		# Flushes the quantum engine from memory
		quantum_engine.flush()

		print('Random numbers', random_numbers_list)