


import unittest

import numpy as np

from diffusers import LMSDiscreteScheduler, OnnxStableDiffusionInpaintPipeline
from diffusers.utils.testing_utils import (
    is_onnx_available,
    load_image,
    nightly,
    require_onnxruntime,
    require_torch_gpu,
)

from ..test_pipelines_onnx_common import OnnxPipelineTesterMixin


if is_onnx_available():
		import onnxruntime as ort

class 		__a      (				_UpperCAmelCase    ,      unittest.TestCase			):
		# FIXME: add fast tests
		pass



@nightly
@require_onnxruntime
@require_torch_gpu
class 		__a      (				unittest.TestCase			):
		@property
		def 	UpperCAmelCase__				(			self						) ->       List[str]:




									"""simple docstring"""





									return (
									    "CUDAExecutionProvider",
									    {
									        "gpu_mem_limit": "15000000000",  # 15GB
									        "arena_extend_strategy": "kSameAsRequested",
									    },
									)
		@property
		def 	UpperCAmelCase__				(			self						) ->       str:




									"""simple docstring"""





									_UpperCAmelCase 		=			ort.SessionOptions()
									_UpperCAmelCase 		=			False
									return options
		def 	UpperCAmelCase__				(			self						) ->       Union[str, Any]:




									"""simple docstring"""





									_UpperCAmelCase 		=			load_image(
									    'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
									    '/in_paint/overture-creations-5sI6fQgYIuo.png'						)
									_UpperCAmelCase 		=			load_image(
									    'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
									    '/in_paint/overture-creations-5sI6fQgYIuo_mask.png'						)
									_UpperCAmelCase 		=			OnnxStableDiffusionInpaintPipeline.from_pretrained(
									    'runwayml/stable-diffusion-inpainting'			,    revision='onnx'			,    safety_checker=UpperCAmelCase_			,    feature_extractor=UpperCAmelCase_			,    provider=self.gpu_provider			,    sess_options=self.gpu_options			,    )
									pipe.set_progress_bar_config(disable=UpperCAmelCase_						)

									_UpperCAmelCase 		=			'A red cat sitting on a park bench'

									_UpperCAmelCase 		=			np.random.RandomState(0						)
									_UpperCAmelCase 		=			pipe(
									    prompt=UpperCAmelCase_			,    image=UpperCAmelCase_			,    mask_image=UpperCAmelCase_			,    guidance_scale=7.5			,    num_inference_steps=10			,    generator=UpperCAmelCase_			,    output_type='np'			,    )
									_UpperCAmelCase 		=			output.images
									_UpperCAmelCase 		=			images[0, 255:258, 255:258, -1]

									assert images.shape == (1, 512, 512, 3)
									_UpperCAmelCase 		=			np.array([0.2514, 0.3007, 0.3517, 0.1790, 0.2382, 0.3167, 0.1944, 0.2273, 0.2464]						)

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






		def 	UpperCAmelCase__				(			self						) ->       Any:




									"""simple docstring"""





									_UpperCAmelCase 		=			load_image(
									    'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
									    '/in_paint/overture-creations-5sI6fQgYIuo.png'						)
									_UpperCAmelCase 		=			load_image(
									    'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
									    '/in_paint/overture-creations-5sI6fQgYIuo_mask.png'						)
									_UpperCAmelCase 		=			LMSDiscreteScheduler.from_pretrained(
									    'runwayml/stable-diffusion-inpainting'			,    subfolder='scheduler'			,    revision='onnx'						)
									_UpperCAmelCase 		=			OnnxStableDiffusionInpaintPipeline.from_pretrained(
									    'runwayml/stable-diffusion-inpainting'			,    revision='onnx'			,    scheduler=UpperCAmelCase_			,    safety_checker=UpperCAmelCase_			,    feature_extractor=UpperCAmelCase_			,    provider=self.gpu_provider			,    sess_options=self.gpu_options			,    )
									pipe.set_progress_bar_config(disable=UpperCAmelCase_						)

									_UpperCAmelCase 		=			'A red cat sitting on a park bench'

									_UpperCAmelCase 		=			np.random.RandomState(0						)
									_UpperCAmelCase 		=			pipe(
									    prompt=UpperCAmelCase_			,    image=UpperCAmelCase_			,    mask_image=UpperCAmelCase_			,    guidance_scale=7.5			,    num_inference_steps=20			,    generator=UpperCAmelCase_			,    output_type='np'			,    )
									_UpperCAmelCase 		=			output.images
									_UpperCAmelCase 		=			images[0, 255:258, 255:258, -1]

									assert images.shape == (1, 512, 512, 3)
									_UpperCAmelCase 		=			np.array([0.0086, 0.0077, 0.0083, 0.0093, 0.0107, 0.0139, 0.0094, 0.0097, 0.0125]						)

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


def 							_lowercase							(     )		->		Optional[int]:
					'''simple docstring'''


					SCREAMING_SNAKE_CASE__													= []
					SCREAMING_SNAKE_CASE__													= 1

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

					SCREAMING_SNAKE_CASE__													= ''.join(UpperCamelCase_		)

					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())





