


import inspect
import unittest

import numpy as np

from transformers import ViTConfig, is_flax_available
from transformers.testing_utils import require_flax, slow

from ...test_configuration_common import ConfigTester
from ...test_modeling_flax_common import FlaxModelTesterMixin, floats_tensor


if is_flax_available():
     import jax

     from transformers.models.vit.modeling_flax_vit import FlaxViTForImageClassification, FlaxViTModel

class      A       (	unittest.TestCase						):



      def __init__(	self:						int		,  _lowerCAmelCase:						str		,  _lowerCAmelCase:						Optional[int]=13		,  _lowerCAmelCase:						List[Any]=30		,  _lowerCAmelCase:						Dict=2		,  _lowerCAmelCase:						Tuple=3		,  _lowerCAmelCase:						Optional[Any]=True		,  _lowerCAmelCase:						Dict=True		,  _lowerCAmelCase:						Optional[Any]=32		,  _lowerCAmelCase:						Union[str, Any]=5		,  _lowerCAmelCase:						Dict=4		,  _lowerCAmelCase:						Dict=37		,  _lowerCAmelCase:						List[Any]="gelu"		,  _lowerCAmelCase:						List[Any]=0.1		,  _lowerCAmelCase:						Tuple=0.1		,  _lowerCAmelCase:						int=10		,  _lowerCAmelCase:						int=0.02		,  )						->    List[str]:
         '''simple docstring'''

         UpperCAmelCase_											=parent
         UpperCAmelCase_											=batch_size
         UpperCAmelCase_											=image_size
         UpperCAmelCase_											=patch_size
         UpperCAmelCase_											=num_channels
         UpperCAmelCase_											=is_training
         UpperCAmelCase_											=use_labels
         UpperCAmelCase_											=hidden_size
         UpperCAmelCase_											=num_hidden_layers
         UpperCAmelCase_											=num_attention_heads
         UpperCAmelCase_											=intermediate_size
         UpperCAmelCase_											=hidden_act
         UpperCAmelCase_											=hidden_dropout_prob
         UpperCAmelCase_											=attention_probs_dropout_prob
         UpperCAmelCase_											=type_sequence_label_size
         UpperCAmelCase_											=initializer_range

         # in ViT, the seq length equals the number of patches + 1 (we add 1 for the [CLS] token)
         UpperCAmelCase_											=(image_size // patch_size) ** 2
         UpperCAmelCase_											=num_patches + 1



      def 	lowerCAmelCase__    (	self:						Dict       )						->    Optional[int]:
         '''simple docstring'''

         UpperCAmelCase_											=floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]       )

         UpperCAmelCase_											=ViTConfig(
             image_size=self.image_size		,  patch_size=self.patch_size		,  num_channels=self.num_channels		,  hidden_size=self.hidden_size		,  num_hidden_layers=self.num_hidden_layers		,  num_attention_heads=self.num_attention_heads		,  intermediate_size=self.intermediate_size		,  hidden_act=self.hidden_act		,  hidden_dropout_prob=self.hidden_dropout_prob		,  attention_probs_dropout_prob=self.attention_probs_dropout_prob		,  is_decoder=_lowerCAmelCase		,  initializer_range=self.initializer_range		,  )

         return config, pixel_values



      def 	lowerCAmelCase__    (	self:						List[str]		,  _lowerCAmelCase:						Optional[int]		,  _lowerCAmelCase:						Any       )						->    List[Any]:
         '''simple docstring'''

         UpperCAmelCase_											=FlaxViTModel(config=_lowerCAmelCase       )
         UpperCAmelCase_											=model(_lowerCAmelCase       )
         # expected sequence length = num_patches + 1 (we add 1 for the [CLS] token)
         UpperCAmelCase_											=(self.image_size, self.image_size)
         UpperCAmelCase_											=(self.patch_size, self.patch_size)
         UpperCAmelCase_											=(image_size[1] // patch_size[1]) * (image_size[0] // patch_size[0])
         self.parent.assertEqual(result.last_hidden_state.shape		,  (self.batch_size, num_patches + 1, self.hidden_size)       )



      def 	lowerCAmelCase__    (	self:						Any		,  _lowerCAmelCase:						int		,  _lowerCAmelCase:						int       )						->    Optional[Any]:
         '''simple docstring'''

         UpperCAmelCase_											=self.type_sequence_label_size
         UpperCAmelCase_											=FlaxViTForImageClassification(config=_lowerCAmelCase       )
         UpperCAmelCase_											=model(_lowerCAmelCase       )
         self.parent.assertEqual(result.logits.shape		,  (self.batch_size, self.type_sequence_label_size)       )

         # test greyscale images
         UpperCAmelCase_											=1
         UpperCAmelCase_											=FlaxViTForImageClassification(_lowerCAmelCase       )

         UpperCAmelCase_											=floats_tensor([self.batch_size, 1, self.image_size, self.image_size]       )
         UpperCAmelCase_											=model(_lowerCAmelCase       )






      def 	lowerCAmelCase__    (	self:						Tuple       )						->    Union[str, Any]:
         '''simple docstring'''

         UpperCAmelCase_											=self.prepare_config_and_inputs()
         (
             (
             UpperCAmelCase_       
         )						,       (
             UpperCAmelCase_       
         )						,              
         )											=config_and_inputs
         UpperCAmelCase_											={"pixel_values": pixel_values}
         return config, inputs_dict

@require_flax
class      A       (	__lowercase		,      unittest.TestCase						):
      _snake_case							     =(FlaxViTModel, FlaxViTForImageClassification) if is_flax_available() else ()



      def 	lowerCAmelCase__    (	self:						List[Any]       )						->    None:
         '''simple docstring'''

         UpperCAmelCase_											=FlaxViTModelTester(self       )
         UpperCAmelCase_											=ConfigTester(self		,  config_class=_lowerCAmelCase		,  has_text_modality=_lowerCAmelCase		,  hidden_size=37       )



      def 	lowerCAmelCase__    (	self:						int       )						->    Any:
         '''simple docstring'''

         self.config_tester.run_common_tests()



      def 	lowerCAmelCase__    (	self:						int       )						->    Any:
         '''simple docstring'''

         UpperCAmelCase_											=self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_model(*_lowerCAmelCase       )



      def 	lowerCAmelCase__    (	self:						List[Any]       )						->    str:
         '''simple docstring'''

         UpperCAmelCase_											=self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_image_classification(*_lowerCAmelCase       )



      def 	lowerCAmelCase__    (	self:						Dict       )						->    Optional[int]:
         '''simple docstring'''

         UpperCAmelCase_						,       UpperCAmelCase_											=self.model_tester.prepare_config_and_inputs_for_common()

         for model_class in self.all_model_classes:
            UpperCAmelCase_											=model_class(_lowerCAmelCase       )
            UpperCAmelCase_											=inspect.signature(model.__call__       )
            # signature.parameters is an OrderedDict => so arg_names order is deterministic
            UpperCAmelCase_											=[*signature.parameters.keys()]

            UpperCAmelCase_											=["pixel_values"]
            self.assertListEqual(arg_names[:1]		,  _lowerCAmelCase       )



      def 	lowerCAmelCase__    (	self:						Union[str, Any]       )						->    Union[str, Any]:
         '''simple docstring'''

         UpperCAmelCase_						,       UpperCAmelCase_											=self.model_tester.prepare_config_and_inputs_for_common()

         for model_class in self.all_model_classes:
            with self.subTest(model_class.__name__       ):
               UpperCAmelCase_											=self._prepare_for_class(_lowerCAmelCase		,  _lowerCAmelCase       )
               UpperCAmelCase_											=model_class(_lowerCAmelCase       )

               @jax.jit
               def model_jitted(_lowerCAmelCase:						Union[str, Any]		,  **_lowerCAmelCase:						Optional[int]       ):
                  return model(pixel_values=_lowerCAmelCase		,  **_lowerCAmelCase       )

               with self.subTest("JIT Enabled"       ):
                  UpperCAmelCase_											=model_jitted(**_lowerCAmelCase       ).to_tuple()

               with self.subTest("JIT Disabled"       ):
                  with jax.disable_jit():
                     UpperCAmelCase_											=model_jitted(**_lowerCAmelCase       ).to_tuple()

               self.assertEqual(len(_lowerCAmelCase       )		,  len(_lowerCAmelCase       )       )
               for jitted_output, output in zip(_lowerCAmelCase		,  _lowerCAmelCase       ):
                  self.assertEqual(jitted_output.shape		,  output.shape       )






      @slow
      def 	lowerCAmelCase__    (	self:						Optional[int]       )						->    List[Any]:
         '''simple docstring'''

         for model_class_name in self.all_model_classes:
            UpperCAmelCase_											=model_class_name.from_pretrained("google/vit-base-patch16-224"       )
            UpperCAmelCase_											=model(np.ones((1, 3, 224, 224)       )       )
            self.assertIsNotNone(_lowerCAmelCase       )











import gc
import random
import tempfile
import unittest

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

from diffusers import AutoencoderKL, DDIMScheduler, LMSDiscreteScheduler, PNDMScheduler, UNetaDConditionModel
from diffusers.pipelines.stable_diffusion_safe import StableDiffusionPipelineSafe as StableDiffusionPipeline
from diffusers.utils import floats_tensor, nightly, torch_device
from diffusers.utils.testing_utils import require_torch_gpu

class      A       (	unittest.TestCase						):



      def 	lowerCAmelCase__    (	self:						str       )						->    Optional[Any]:
         '''simple docstring'''

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



      @property
      def 	lowerCAmelCase__    (	self:						Optional[int]       )						->    List[str]:
         '''simple docstring'''

         UpperCAmelCase_											=1
         UpperCAmelCase_											=3
         UpperCAmelCase_											=(32, 32)

         UpperCAmelCase_											=floats_tensor((batch_size, num_channels) + sizes		,  rng=random.Random(0       )       ).to(_lowerCAmelCase       )
         return image



      @property
      def 	lowerCAmelCase__    (	self:						Any       )						->    Union[str, Any]:
         '''simple docstring'''

         torch.manual_seed(0       )
         UpperCAmelCase_											=UNetaDConditionModel(
             block_out_channels=(32, 64)		,  layers_per_block=2		,  sample_size=32		,  in_channels=4		,  out_channels=4		,  down_block_types=("DownBlock2D", "CrossAttnDownBlock2D")		,  up_block_types=("CrossAttnUpBlock2D", "UpBlock2D")		,  cross_attention_dim=32		,  )
         return model



      @property
      def 	lowerCAmelCase__    (	self:						List[Any]       )						->    int:
         '''simple docstring'''

         torch.manual_seed(0       )
         UpperCAmelCase_											=AutoencoderKL(
             block_out_channels=[32, 64]		,  in_channels=3		,  out_channels=3		,  down_block_types=["DownEncoderBlock2D", "DownEncoderBlock2D"]		,  up_block_types=["UpDecoderBlock2D", "UpDecoderBlock2D"]		,  latent_channels=4		,  )
         return model



      @property
      def 	lowerCAmelCase__    (	self:						Dict       )						->    str:
         '''simple docstring'''

         torch.manual_seed(0       )
         UpperCAmelCase_											=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=1000		,  )
         return CLIPTextModel(_lowerCAmelCase       )



      @property
      def 	lowerCAmelCase__    (	self:						Optional[int]       )						->    Optional[Any]:
         '''simple docstring'''

         def extract(*_lowerCAmelCase:						List[str]		,  **_lowerCAmelCase:						List[str]       ):

            class      A       :



                  def __init__(	self:						List[str]       )						->    Any:
                     '''simple docstring'''

                     UpperCAmelCase_											=torch.ones([0]       )






                  def 	lowerCAmelCase__    (	self:						List[str]		,  _lowerCAmelCase:						Dict       )						->    List[Any]:
                     '''simple docstring'''

                     self.pixel_values.to(_lowerCAmelCase       )
                     return self

            return Out()

         return extract



      def 	lowerCAmelCase__    (	self:						Tuple       )						->    Union[str, Any]:
         '''simple docstring'''

         UpperCAmelCase_											="cpu"  # ensure determinism for the device-dependent torch.Generator
         UpperCAmelCase_											=self.dummy_cond_unet
         UpperCAmelCase_											=DDIMScheduler(
             beta_start=0.0_00_85		,  beta_end=0.0_12		,  beta_schedule="scaled_linear"		,  clip_sample=_lowerCAmelCase		,  set_alpha_to_one=_lowerCAmelCase		,  )

         UpperCAmelCase_											=self.dummy_vae
         UpperCAmelCase_											=self.dummy_text_encoder
         UpperCAmelCase_											=CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"       )

         # make sure here that pndm scheduler skips prk
         UpperCAmelCase_											=StableDiffusionPipeline(
             unet=_lowerCAmelCase		,  scheduler=_lowerCAmelCase		,  vae=_lowerCAmelCase		,  text_encoder=_lowerCAmelCase		,  tokenizer=_lowerCAmelCase		,  safety_checker=_lowerCAmelCase		,  feature_extractor=self.dummy_extractor		,  )
         UpperCAmelCase_											=sd_pipe.to(_lowerCAmelCase       )
         sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase       )

         UpperCAmelCase_											="A painting of a squirrel eating a burger"

         UpperCAmelCase_											=torch.Generator(device=_lowerCAmelCase       ).manual_seed(0       )
         UpperCAmelCase_											=sd_pipe([prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=6.0		,  num_inference_steps=2		,  output_type="np"       )
         UpperCAmelCase_											=output.images

         UpperCAmelCase_											=torch.Generator(device=_lowerCAmelCase       ).manual_seed(0       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=6.0		,  num_inference_steps=2		,  output_type="np"		,  return_dict=_lowerCAmelCase		,  )[0]

         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=image_from_tuple[0, -3:, -3:, -1]

         assert image.shape == (1, 64, 64, 3)
         UpperCAmelCase_											=np.array([0.57_56, 0.61_18, 0.50_05, 0.50_41, 0.54_71, 0.47_26, 0.49_76, 0.48_65, 0.48_64]       )

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



      def 	lowerCAmelCase__    (	self:						Optional[int]       )						->    List[Any]:
         '''simple docstring'''

         UpperCAmelCase_											="cpu"  # ensure determinism for the device-dependent torch.Generator
         UpperCAmelCase_											=self.dummy_cond_unet
         UpperCAmelCase_											=PNDMScheduler(skip_prk_steps=_lowerCAmelCase       )
         UpperCAmelCase_											=self.dummy_vae
         UpperCAmelCase_											=self.dummy_text_encoder
         UpperCAmelCase_											=CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"       )

         # make sure here that pndm scheduler skips prk
         UpperCAmelCase_											=StableDiffusionPipeline(
             unet=_lowerCAmelCase		,  scheduler=_lowerCAmelCase		,  vae=_lowerCAmelCase		,  text_encoder=_lowerCAmelCase		,  tokenizer=_lowerCAmelCase		,  safety_checker=_lowerCAmelCase		,  feature_extractor=self.dummy_extractor		,  )
         UpperCAmelCase_											=sd_pipe.to(_lowerCAmelCase       )
         sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase       )

         UpperCAmelCase_											="A painting of a squirrel eating a burger"
         UpperCAmelCase_											=torch.Generator(device=_lowerCAmelCase       ).manual_seed(0       )
         UpperCAmelCase_											=sd_pipe([prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=6.0		,  num_inference_steps=2		,  output_type="np"       )

         UpperCAmelCase_											=output.images

         UpperCAmelCase_											=torch.Generator(device=_lowerCAmelCase       ).manual_seed(0       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=6.0		,  num_inference_steps=2		,  output_type="np"		,  return_dict=_lowerCAmelCase		,  )[0]

         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=image_from_tuple[0, -3:, -3:, -1]

         assert image.shape == (1, 64, 64, 3)
         UpperCAmelCase_											=np.array([0.51_25, 0.57_16, 0.48_28, 0.50_60, 0.56_50, 0.47_68, 0.51_85, 0.48_95, 0.49_93]       )

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



      def 	lowerCAmelCase__    (	self:						List[Any]       )						->    str:
         '''simple docstring'''

         UpperCAmelCase_											=StableDiffusionPipeline.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-lms-pipe"		,  safety_checker=_lowerCAmelCase       )
         assert isinstance(_lowerCAmelCase		,  _lowerCAmelCase       )
         assert isinstance(pipe.scheduler		,  _lowerCAmelCase       )
         assert pipe.safety_checker is None

         UpperCAmelCase_											=pipe("example prompt"		,  num_inference_steps=2       ).images[0]
         assert image is not None

         # check that there's no error when saving a pipeline with one of the models being None
         with tempfile.TemporaryDirectory() as tmpdirname:
            pipe.save_pretrained(_lowerCAmelCase       )
            UpperCAmelCase_											=StableDiffusionPipeline.from_pretrained(_lowerCAmelCase       )

         # sanity check that the pipeline still works
         assert pipe.safety_checker is None
         UpperCAmelCase_											=pipe("example prompt"		,  num_inference_steps=2       ).images[0]
         assert image is not None






      @unittest.skipIf(torch_device != "cuda"		,  "This test requires a GPU"       )
      def 	lowerCAmelCase__    (	self:						int       )						->    Optional[int]:
         '''simple docstring'''

         UpperCAmelCase_											=self.dummy_cond_unet
         UpperCAmelCase_											=PNDMScheduler(skip_prk_steps=_lowerCAmelCase       )
         UpperCAmelCase_											=self.dummy_vae
         UpperCAmelCase_											=self.dummy_text_encoder
         UpperCAmelCase_											=CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"       )

         # put models in fp16
         UpperCAmelCase_											=unet.half()
         UpperCAmelCase_											=vae.half()
         UpperCAmelCase_											=bert.half()

         # make sure here that pndm scheduler skips prk
         UpperCAmelCase_											=StableDiffusionPipeline(
             unet=_lowerCAmelCase		,  scheduler=_lowerCAmelCase		,  vae=_lowerCAmelCase		,  text_encoder=_lowerCAmelCase		,  tokenizer=_lowerCAmelCase		,  safety_checker=_lowerCAmelCase		,  feature_extractor=self.dummy_extractor		,  )
         UpperCAmelCase_											=sd_pipe.to(_lowerCAmelCase       )
         sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase       )

         UpperCAmelCase_											="A painting of a squirrel eating a burger"
         UpperCAmelCase_											=sd_pipe([prompt]		,  num_inference_steps=2		,  output_type="np"       ).images

         assert image.shape == (1, 64, 64, 3)

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



      def 	lowerCAmelCase__    (	self:						List[Any]       )						->    Tuple:
         '''simple docstring'''

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



      def 	lowerCAmelCase__    (	self:						Union[str, Any]       )						->    Union[str, Any]:
         '''simple docstring'''

         UpperCAmelCase_											=StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5"		,  safety_checker=_lowerCAmelCase       )
         UpperCAmelCase_											=LMSDiscreteScheduler.from_config(sd_pipe.scheduler.config       )
         UpperCAmelCase_											=sd_pipe.to(_lowerCAmelCase       )
         sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase       )

         UpperCAmelCase_											=(
             "portrait of girl with smokey eyes makeup in abandoned hotel, grange clothes, redshift, wide high angle"
             " coloured polaroid photograph with flash, kodak film, hyper real, stunning moody cinematography, with"
             " anamorphic lenses, by maripol, fallen angels by wong kar - wai, style of suspiria and neon demon and"
             " children from bahnhof zoo, detailed "
         )
         UpperCAmelCase_											=40_0366_0346
         UpperCAmelCase_											=7

         # without safety guidance (sld_guidance_scale = 0)
         UpperCAmelCase_											=torch.manual_seed(_lowerCAmelCase       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=_lowerCAmelCase		,  num_inference_steps=50		,  output_type="np"		,  width=512		,  height=512		,  sld_guidance_scale=0		,  )

         UpperCAmelCase_											=output.images
         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=[0.22_78, 0.22_31, 0.22_49, 0.23_33, 0.23_03, 0.18_85, 0.22_73, 0.21_44, 0.21_76]

         assert image.shape == (1, 512, 512, 3)

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

         # without safety guidance (strong configuration)
         UpperCAmelCase_											=torch.manual_seed(_lowerCAmelCase       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=_lowerCAmelCase		,  num_inference_steps=50		,  output_type="np"		,  width=512		,  height=512		,  sld_guidance_scale=2000		,  sld_warmup_steps=7		,  sld_threshold=0.0_25		,  sld_momentum_scale=0.5		,  sld_mom_beta=0.7		,  )

         UpperCAmelCase_											=output.images
         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=[0.23_83, 0.22_76, 0.2_36, 0.21_92, 0.21_86, 0.20_53, 0.19_71, 0.19_01, 0.17_19]

         assert image.shape == (1, 512, 512, 3)

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



      def 	lowerCAmelCase__    (	self:						Any       )						->    Union[str, Any]:
         '''simple docstring'''

         UpperCAmelCase_											=StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5"		,  safety_checker=_lowerCAmelCase       )
         UpperCAmelCase_											=LMSDiscreteScheduler.from_config(sd_pipe.scheduler.config       )
         UpperCAmelCase_											=sd_pipe.to(_lowerCAmelCase       )
         sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase       )

         UpperCAmelCase_											="padme amidala taking a bath artwork, safe for work, no nudity"
         UpperCAmelCase_											=27_3497_1755
         UpperCAmelCase_											=7

         UpperCAmelCase_											=torch.manual_seed(_lowerCAmelCase       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=_lowerCAmelCase		,  num_inference_steps=50		,  output_type="np"		,  width=512		,  height=512		,  sld_guidance_scale=0		,  )

         UpperCAmelCase_											=output.images
         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=[0.35_02, 0.36_22, 0.33_96, 0.36_42, 0.34_78, 0.33_18, 0.35, 0.33_48, 0.32_97]

         assert image.shape == (1, 512, 512, 3)

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

         UpperCAmelCase_											=torch.manual_seed(_lowerCAmelCase       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=_lowerCAmelCase		,  num_inference_steps=50		,  output_type="np"		,  width=512		,  height=512		,  sld_guidance_scale=2000		,  sld_warmup_steps=7		,  sld_threshold=0.0_25		,  sld_momentum_scale=0.5		,  sld_mom_beta=0.7		,  )

         UpperCAmelCase_											=output.images
         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=[0.55_31, 0.52_06, 0.48_95, 0.51_56, 0.51_82, 0.47_51, 0.48_02, 0.48_03, 0.44_43]

         assert image.shape == (1, 512, 512, 3)

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






      def 	lowerCAmelCase__    (	self:						str       )						->    List[Any]:
         '''simple docstring'''

         UpperCAmelCase_											=StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5"       )
         UpperCAmelCase_											=sd_pipe.to(_lowerCAmelCase       )
         sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase       )

         UpperCAmelCase_											=(
             "the four horsewomen of the apocalypse, painting by tom of finland, gaston bussiere, craig mullins, j. c."
             " leyendecker"
         )
         UpperCAmelCase_											=10_4435_5234
         UpperCAmelCase_											=12

         UpperCAmelCase_											=torch.manual_seed(_lowerCAmelCase       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=_lowerCAmelCase		,  num_inference_steps=50		,  output_type="np"		,  width=512		,  height=512		,  sld_guidance_scale=0		,  )

         UpperCAmelCase_											=output.images
         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]       )

         assert image.shape == (1, 512, 512, 3)

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

         UpperCAmelCase_											=torch.manual_seed(_lowerCAmelCase       )
         UpperCAmelCase_											=sd_pipe(
             [prompt]		,  generator=_lowerCAmelCase		,  guidance_scale=_lowerCAmelCase		,  num_inference_steps=50		,  output_type="np"		,  width=512		,  height=512		,  sld_guidance_scale=2000		,  sld_warmup_steps=7		,  sld_threshold=0.0_25		,  sld_momentum_scale=0.5		,  sld_mom_beta=0.7		,  )

         UpperCAmelCase_											=output.images
         UpperCAmelCase_											=image[0, -3:, -3:, -1]
         UpperCAmelCase_											=np.array([0.58_18, 0.62_85, 0.68_35, 0.60_19, 0.6_25, 0.67_54, 0.60_96, 0.63_34, 0.65_61]       )
         assert image.shape == (1, 512, 512, 3)

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




