



'''simple docstring'''



import random
import unittest

import torch

from diffusers import IFImgaImgSuperResolutionPipeline
from diffusers.utils import floats_tensor
from diffusers.utils.import_utils import is_xformers_available
from diffusers.utils.testing_utils import skip_mps, torch_device

from ..pipeline_params import TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS, TEXT_GUIDED_IMAGE_VARIATION_PARAMS
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin





@skip_mps
class _UpperCamelCase		(     A      ,       A      ,       unittest.TestCase		):





				'''simple docstring'''





				lowerCAmelCase__					    =    IFImgaImgSuperResolutionPipeline
				lowerCAmelCase__					    =    TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {"""width""", """height"""}
				lowerCAmelCase__					    =    TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS.union({"""original_image"""}		)
				lowerCAmelCase__					    =    PipelineTesterMixin.required_optional_params - {"""latents"""}

				def 				__lowerCamelCase     (							self  :  List[Any]):







											'''simple docstring'''

											return self._get_superresolution_dummy_components()

				def 				__lowerCamelCase     (							self  :  List[str]  ,       _lowerCAmelCase  :  Optional[Any]  ,       _lowerCAmelCase  :  Union[str, Any]=0):







											'''simple docstring'''

											if str(_lowerCAmelCase).startswith('mps'):
																		__lowercase       	=torch.manual_seed(_lowerCAmelCase)
											else:
																		__lowercase       	=torch.Generator(device=_lowerCAmelCase).manual_seed(_lowerCAmelCase)

											__lowercase       	=floats_tensor((1, 3, 3_2, 3_2)  ,       rng=random.Random(_lowerCAmelCase)).to(_lowerCAmelCase)
											__lowercase       	=floats_tensor((1, 3, 1_6, 1_6)  ,       rng=random.Random(_lowerCAmelCase)).to(_lowerCAmelCase)

											__lowercase       	={
											    'prompt': 'A painting of a squirrel eating a burger',
											    'image': image,
											    'original_image': original_image,
											    'generator': generator,
											    'num_inference_steps': 2,
											    'output_type': 'numpy',
											}

											return inputs

				@unittest.skipIf(
				    torch_device != 'cuda' or not is_xformers_available()  ,       reason='XFormers attention is only available with CUDA and `xformers` installed'  ,       )
				def 				__lowerCamelCase     (							self  :  Dict):







											'''simple docstring'''

											self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3)

				def 				__lowerCamelCase     (							self  :  Any):







											'''simple docstring'''

											self._test_save_load_optional_components()

				@unittest.skipIf(torch_device != 'cuda'  ,       reason='float16 requires CUDA')
				def 				__lowerCamelCase     (							self  :  List[str]):







											'''simple docstring'''

											super().test_save_load_floataa(expected_max_diff=1e-1)

				def 				__lowerCamelCase     (							self  :  Tuple):







											'''simple docstring'''

											self._test_attention_slicing_forward_pass(expected_max_diff=1e-2)

				def 				__lowerCamelCase     (							self  :  int):







											'''simple docstring'''

											self._test_save_load_local()

				def 				__lowerCamelCase     (							self  :  Optional[int]):







											'''simple docstring'''

											self._test_inference_batch_single_identical(
											    expected_max_diff=1e-2  ,       )








'''simple docstring'''



def   _A       (   _lowerCAmelCase					):



							"""simple docstring"""



							if number > 0:
														raise ValueError('input must be a negative integer'					)
							__lowercase       	=len(bin(_lowerCAmelCase					)[3:]					)
							__lowercase       	=bin(abs(_lowerCAmelCase					) - (1 << binary_number_length)					)[3:]
							__lowercase       	=(
							    (
							        '1'
							        + '0' * (binary_number_length - len(_lowerCAmelCase					))
							        + twos_complement_number
							    )
							    if number < 0
							    else '0'
							)
							return "0b" + twos_complement_number


if __name__ == "__main__":
		import doctest

		doctest.testmod()



