





"""simple docstring"""



import random
import unittest

import torch

from diffusers import IFInpaintingPipeline
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_INPAINTING_BATCH_PARAMS,
    TEXT_GUIDED_IMAGE_INPAINTING_PARAMS,
)
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin






@skip_mps
class 		__snake_case (		SCREAMING_SNAKE_CASE__							,							SCREAMING_SNAKE_CASE__							,							unittest.TestCase					):





 """simple docstring"""


 _lowerCamelCase				=					IFInpaintingPipeline
 _lowerCamelCase				=					TEXT_GUIDED_IMAGE_INPAINTING_PARAMS - {"""width""", """height"""}
 _lowerCamelCase				=					TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS
 _lowerCamelCase				=					PipelineTesterMixin.required_optional_params - {"""latents"""}

 def  UpperCamelCase__(   self  ):



     '''simple docstring'''




     return self._get_dummy_components()

 def  UpperCamelCase__(   self ,						__lowerCamelCase ,						__lowerCamelCase=0  ):



     '''simple docstring'''




     if str(__lowerCamelCase  ).startswith('''mps'''  ):
         __A   :						List[str]									=					torch.manual_seed(__lowerCamelCase  )
     else:
         __A   :						Tuple									=					torch.Generator(device=__lowerCamelCase  ).manual_seed(__lowerCamelCase  )

     __A   :						str									=					floats_tensor((1, 3, 32, 32) ,						rng=random.Random(__lowerCamelCase  )  ).to(__lowerCamelCase  )
     __A   :						str									=					floats_tensor((1, 3, 32, 32) ,						rng=random.Random(__lowerCamelCase  )  ).to(__lowerCamelCase  )

     __A   :						List[Any]									=					{
         '''prompt''': '''A painting of a squirrel eating a burger''',
         '''image''': image,
         '''mask_image''': mask_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  UpperCamelCase__(   self  ):



     '''simple docstring'''




     self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3  )

 def  UpperCamelCase__(   self  ):



     '''simple docstring'''




     self._test_save_load_optional_components()

 @unittest.skipIf(torch_device != '''cuda''' ,						reason='''float16 requires CUDA'''  )
 def  UpperCamelCase__(   self  ):



     '''simple docstring'''




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

 def  UpperCamelCase__(   self  ):



     '''simple docstring'''




     self._test_attention_slicing_forward_pass(expected_max_diff=1e-2  )

 def  UpperCamelCase__(   self  ):



     '''simple docstring'''




     self._test_save_load_local()







 def  UpperCamelCase__(   self  ):



     '''simple docstring'''




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











"""simple docstring"""



def 		__lowercase					(       )       ->Tuple:



    '''simple docstring'''







    __A   :						str									=					[]
    __A   :						List[Any]									=					1

    while len(snake_case_						) < 1e6:
        constant.append(str(snake_case_						)						)
        i += 1

    __A   :						Any									=					''''''.join(snake_case_						)

    return (
        int(constant[0]						)
        * int(constant[9]						)
        * int(constant[99]						)
        * int(constant[999]						)
        * int(constant[9999]						)
        * int(constant[99999]						)
        * int(constant[999999]						)
    )


if __name__ == "__main__":
       print(solution())




