


'''simple docstring'''



import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()





class    UpperCAmelCase_  (unittest.TestCase  ):





    """simple docstring"""






    @property
    def       lowercase_				(							self	)				->     int:
         torch.manual_seed(0	)
         __lowerCamelCase   :	int								=		UNetaDModel(
             block_out_channels=(32, 64)			,     layers_per_block=2			,     sample_size=32			,     in_channels=3			,     out_channels=3			,     down_block_types=('DownBlock2D', 'AttnDownBlock2D')			,     up_block_types=('AttnUpBlock2D', 'UpBlock2D')			,     )
         return model







    @property
    def       lowercase_				(							self	)				->     Optional[int]:
         torch.manual_seed(0	)
         __lowerCamelCase   :	str								=		VQModel(
             block_out_channels=[32, 64]			,     in_channels=3			,     out_channels=3			,     down_block_types=['DownEncoderBlock2D', 'DownEncoderBlock2D']			,     up_block_types=['UpDecoderBlock2D', 'UpDecoderBlock2D']			,     latent_channels=3			,     )
         return model







    @property
    def       lowercase_				(							self	)				->     Tuple:
         torch.manual_seed(0	)
         __lowerCamelCase   :	Dict								=		CLIPTextConfig(
             bos_token_id=0			,     eos_token_id=2			,     hidden_size=32			,     intermediate_size=37			,     layer_norm_eps=1E-05			,     num_attention_heads=4			,     num_hidden_layers=5			,     pad_token_id=1			,     vocab_size=10_00			,     )
         return CLIPTextModel(SCREAMING_SNAKE_CASE_	)







    def       lowercase_				(							self	)				->     Dict:
         __lowerCamelCase   :	Dict								=		self.dummy_uncond_unet
         __lowerCamelCase   :	Optional[Any]								=		DDIMScheduler()
         __lowerCamelCase   :	Union[str, Any]								=		self.dummy_vq_model

         __lowerCamelCase   :	Optional[int]								=		LDMPipeline(unet=SCREAMING_SNAKE_CASE_			,     vqvae=SCREAMING_SNAKE_CASE_			,     scheduler=SCREAMING_SNAKE_CASE_	)
         ldm.to(SCREAMING_SNAKE_CASE_	)
         ldm.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE_	)

         __lowerCamelCase   :	Dict								=		torch.manual_seed(0	)
         __lowerCamelCase   :	List[Any]								=		ldm(generator=SCREAMING_SNAKE_CASE_			,     num_inference_steps=2			,     output_type='numpy'	).images

         __lowerCamelCase   :	int								=		torch.manual_seed(0	)
         __lowerCamelCase   :	Any								=		ldm(generator=SCREAMING_SNAKE_CASE_			,     num_inference_steps=2			,     output_type='numpy'			,     return_dict=SCREAMING_SNAKE_CASE_	)[0]

         __lowerCamelCase   :	Optional[int]								=		image[0, -3:, -3:, -1]
         __lowerCamelCase   :	List[Any]								=		image_from_tuple[0, -3:, -3:, -1]

         assert image.shape == (1, 64, 64, 3)
         __lowerCamelCase   :	Tuple								=		np.array([0.8_5_1_2, 0.8_1_8, 0.6_4_1_1, 0.6_8_0_8, 0.4_4_6_5, 0.5_6_1_8, 0.4_6, 0.6_2_3_1, 0.5_1_7_2]	)
         __lowerCamelCase   :	int								=		1E-2 if torch_device != 'mps' else 3E-2

         assert np.abs(image_slice.flatten() - expected_slice	).max() < tolerance
         assert np.abs(image_from_tuple_slice.flatten() - expected_slice	).max() < tolerance







@slow
@require_torch
class    UpperCAmelCase_  (unittest.TestCase  ):





    """simple docstring"""






    def       lowercase_				(							self	)				->     Optional[int]:
         __lowerCamelCase   :	Any								=		LDMPipeline.from_pretrained('CompVis/ldm-celebahq-256'	)
         ldm.to(SCREAMING_SNAKE_CASE_	)
         ldm.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE_	)

         __lowerCamelCase   :	Dict								=		torch.manual_seed(0	)
         __lowerCamelCase   :	Dict								=		ldm(generator=SCREAMING_SNAKE_CASE_			,     num_inference_steps=5			,     output_type='numpy'	).images

         __lowerCamelCase   :	Dict								=		image[0, -3:, -3:, -1]

         assert image.shape == (1, 2_56, 2_56, 3)
         __lowerCamelCase   :	Optional[Any]								=		np.array([0.4_3_9_9, 0.4_4_9_7_5, 0.4_6_8_2_5, 0.4_7_4, 0.4_3_5_9, 0.4_5_8_1, 0.4_5_0_9_5, 0.4_3_4_1, 0.4_4_4_7]	)
         __lowerCamelCase   :	Any								=		1E-2 if torch_device != 'mps' else 3E-2

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










'''simple docstring'''



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    UpperCAmelCase_  (_UpperCAmelCase					,		unittest.TestCase  ):





    """simple docstring"""






    pass







@nightly
@require_onnxruntime
@require_torch_gpu
class    UpperCAmelCase_  (unittest.TestCase  ):





    """simple docstring"""






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







    @property
    def       lowercase_				(							self	)				->     Dict:
         __lowerCamelCase   :	int								=		ort.SessionOptions()
         __lowerCamelCase   :	Optional[Any]								=		False
         return options







    def       lowercase_				(							self	)				->     Union[str, Any]:
         __lowerCamelCase   :	Any								=		load_image(
             'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
             '/in_paint/overture-creations-5sI6fQgYIuo.png'	)
         __lowerCamelCase   :	Any								=		load_image(
             'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
             '/in_paint/overture-creations-5sI6fQgYIuo_mask.png'	)
         __lowerCamelCase   :	Any								=		OnnxStableDiffusionInpaintPipeline.from_pretrained(
             'runwayml/stable-diffusion-inpainting'			,     revision='onnx'			,     safety_checker=SCREAMING_SNAKE_CASE_			,     feature_extractor=SCREAMING_SNAKE_CASE_			,     provider=self.gpu_provider			,     sess_options=self.gpu_options			,     )
         pipe.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE_	)

         __lowerCamelCase   :	Tuple								=		'A red cat sitting on a park bench'

         __lowerCamelCase   :	Union[str, Any]								=		np.random.RandomState(0	)
         __lowerCamelCase   :	Union[str, Any]								=		pipe(
             prompt=SCREAMING_SNAKE_CASE_			,     image=SCREAMING_SNAKE_CASE_			,     mask_image=SCREAMING_SNAKE_CASE_			,     guidance_scale=7.5			,     num_inference_steps=10			,     generator=SCREAMING_SNAKE_CASE_			,     output_type='np'			,     )
         __lowerCamelCase   :	Optional[Any]								=		output.images
         __lowerCamelCase   :	Tuple								=		images[0, 2_55:2_58, 2_55:2_58, -1]

         assert images.shape == (1, 5_12, 5_12, 3)
         __lowerCamelCase   :	Union[str, Any]								=		np.array([0.2_5_1_4, 0.3_0_0_7, 0.3_5_1_7, 0.1_7_9_0, 0.2_3_8_2, 0.3_1_6_7, 0.1_9_4_4, 0.2_2_7_3, 0.2_4_6_4]	)

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







    def       lowercase_				(							self	)				->     Optional[Any]:
         __lowerCamelCase   :	Union[str, Any]								=		load_image(
             'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
             '/in_paint/overture-creations-5sI6fQgYIuo.png'	)
         __lowerCamelCase   :	List[str]								=		load_image(
             'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'
             '/in_paint/overture-creations-5sI6fQgYIuo_mask.png'	)
         __lowerCamelCase   :	Dict								=		LMSDiscreteScheduler.from_pretrained(
             'runwayml/stable-diffusion-inpainting'			,     subfolder='scheduler'			,     revision='onnx'	)
         __lowerCamelCase   :	Tuple								=		OnnxStableDiffusionInpaintPipeline.from_pretrained(
             'runwayml/stable-diffusion-inpainting'			,     revision='onnx'			,     scheduler=SCREAMING_SNAKE_CASE_			,     safety_checker=SCREAMING_SNAKE_CASE_			,     feature_extractor=SCREAMING_SNAKE_CASE_			,     provider=self.gpu_provider			,     sess_options=self.gpu_options			,     )
         pipe.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE_	)

         __lowerCamelCase   :	str								=		'A red cat sitting on a park bench'

         __lowerCamelCase   :	Tuple								=		np.random.RandomState(0	)
         __lowerCamelCase   :	Optional[int]								=		pipe(
             prompt=SCREAMING_SNAKE_CASE_			,     image=SCREAMING_SNAKE_CASE_			,     mask_image=SCREAMING_SNAKE_CASE_			,     guidance_scale=7.5			,     num_inference_steps=20			,     generator=SCREAMING_SNAKE_CASE_			,     output_type='np'			,     )
         __lowerCamelCase   :	List[str]								=		output.images
         __lowerCamelCase   :	Dict								=		images[0, 2_55:2_58, 2_55:2_58, -1]

         assert images.shape == (1, 5_12, 5_12, 3)
         __lowerCamelCase   :	Tuple								=		np.array([0.0_0_8_6, 0.0_0_7_7, 0.0_0_8_3, 0.0_0_9_3, 0.0_1_0_7, 0.0_1_3_9, 0.0_0_9_4, 0.0_0_9_7, 0.0_1_2_5]	)

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






