




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



 '''simple docstring'''


 def        a__				(       self      :						Any						)     ->			Dict:

       """simple docstring"""






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

 @property
 def        a__				(       self      :						List[Any]						)     ->			int:

       """simple docstring"""






       lowerCamelCase_	  =					1
       lowerCamelCase_	  =					3
       lowerCamelCase_	  =					(32, 32)

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

 @property
 def        a__				(       self      :						Optional[Any]						)     ->			str:

       """simple docstring"""






       torch.manual_seed(0						)
       lowerCamelCase_	  =					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        a__				(       self      :						List[str]						)     ->			Dict:

       """simple docstring"""






       torch.manual_seed(0						)
       lowerCamelCase_	  =					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        a__				(       self      :						str						)     ->			Optional[Any]:

       """simple docstring"""






       torch.manual_seed(0						)
       lowerCamelCase_	  =					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(A_						)

 @property
 def        a__				(       self      :						str						)     ->			Union[str, Any]:

       """simple docstring"""






       def extract(*A_      :						List[Any]		,							**A_      :						Optional[int]						):







             class 						A:



              '''simple docstring'''


              def __init__(       self      :						Tuple						)     ->			Optional[int]:

                    """simple docstring"""






                    lowerCamelCase_	  =					torch.ones([0]						)





              def        a__				(       self      :						int		,							A_      :						List[Any]						)     ->			Tuple:

                    """simple docstring"""






                    self.pixel_values.to(A_						)
                    return self

             return Out()

       return extract

 def        a__				(       self      :						Any						)     ->			Optional[Any]:

       """simple docstring"""






       lowerCamelCase_	  =					'cpu'  # ensure determinism for the device-dependent torch.Generator
       lowerCamelCase_	  =					self.dummy_cond_unet
       lowerCamelCase_	  =					DDIMScheduler(
           beta_start=0.00085		,							beta_end=0.012		,							beta_schedule='scaled_linear'		,							clip_sample=A_		,							set_alpha_to_one=A_		,							)

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

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

       lowerCamelCase_	  =					'A painting of a squirrel eating a burger'

       lowerCamelCase_	  =					torch.Generator(device=A_						).manual_seed(0						)
       lowerCamelCase_	  =					sd_pipe([prompt]		,							generator=A_		,							guidance_scale=6.0		,							num_inference_steps=2		,							output_type='np'						)
       lowerCamelCase_	  =					output.images

       lowerCamelCase_	  =					torch.Generator(device=A_						).manual_seed(0						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=6.0		,							num_inference_steps=2		,							output_type='np'		,							return_dict=A_		,							)[0]

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

       assert image.shape == (1, 64, 64, 3)
       lowerCamelCase_	  =					np.array([0.5756, 0.6118, 0.5005, 0.5041, 0.5471, 0.4726, 0.4976, 0.4865, 0.4864]						)

       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        a__				(       self      :						List[str]						)     ->			Tuple:

       """simple docstring"""






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

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

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

       lowerCamelCase_	  =					output.images

       lowerCamelCase_	  =					torch.Generator(device=A_						).manual_seed(0						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=6.0		,							num_inference_steps=2		,							output_type='np'		,							return_dict=A_		,							)[0]

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

       assert image.shape == (1, 64, 64, 3)
       lowerCamelCase_	  =					np.array([0.5125, 0.5716, 0.4828, 0.5060, 0.5650, 0.4768, 0.5185, 0.4895, 0.4993]						)

       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        a__				(       self      :						str						)     ->			Dict:

       """simple docstring"""






       lowerCamelCase_	  =					StableDiffusionPipeline.from_pretrained(
           'hf-internal-testing/tiny-stable-diffusion-lms-pipe'		,							safety_checker=A_						)
       assert isinstance(A_		,							A_						)
       assert isinstance(pipe.scheduler		,							A_						)
       assert pipe.safety_checker is None

       lowerCamelCase_	  =					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(A_						)
             lowerCamelCase_	  =					StableDiffusionPipeline.from_pretrained(A_						)

       # sanity check that the pipeline still works
       assert pipe.safety_checker is None
       lowerCamelCase_	  =					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        a__				(       self      :						Tuple						)     ->			List[Any]:

       """simple docstring"""






       lowerCamelCase_	  =					self.dummy_cond_unet
       lowerCamelCase_	  =					PNDMScheduler(skip_prk_steps=A_						)
       lowerCamelCase_	  =					self.dummy_vae
       lowerCamelCase_	  =					self.dummy_text_encoder
       lowerCamelCase_	  =					CLIPTokenizer.from_pretrained('hf-internal-testing/tiny-random-clip'						)

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

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

       lowerCamelCase_	  =					'A painting of a squirrel eating a burger'
       lowerCamelCase_	  =					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     ):



 '''simple docstring'''


 def        a__				(       self      :						List[str]						)     ->			Optional[Any]:

       """simple docstring"""






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

 def        a__				(       self      :						Dict						)     ->			Optional[Any]:

       """simple docstring"""






       lowerCamelCase_	  =					StableDiffusionPipeline.from_pretrained('runwayml/stable-diffusion-v1-5'		,							safety_checker=A_						)
       lowerCamelCase_	  =					LMSDiscreteScheduler.from_config(sd_pipe.scheduler.config						)
       lowerCamelCase_	  =					sd_pipe.to(A_						)
       sd_pipe.set_progress_bar_config(disable=A_						)

       lowerCamelCase_	  =					(
           '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 '
       )
       lowerCamelCase_	  =					4003660346
       lowerCamelCase_	  =					7

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

       lowerCamelCase_	  =					output.images
       lowerCamelCase_	  =					image[0, -3:, -3:, -1]
       lowerCamelCase_	  =					[0.2278, 0.2231, 0.2249, 0.2333, 0.2303, 0.1885, 0.2273, 0.2144, 0.2176]

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

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

       # without safety guidance (strong configuration)
       lowerCamelCase_	  =					torch.manual_seed(A_						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=A_		,							num_inference_steps=50		,							output_type='np'		,							width=512		,							height=512		,							sld_guidance_scale=2000		,							sld_warmup_steps=7		,							sld_threshold=0.025		,							sld_momentum_scale=0.5		,							sld_mom_beta=0.7		,							)

       lowerCamelCase_	  =					output.images
       lowerCamelCase_	  =					image[0, -3:, -3:, -1]
       lowerCamelCase_	  =					[0.2383, 0.2276, 0.236, 0.2192, 0.2186, 0.2053, 0.1971, 0.1901, 0.1719]

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

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

 def        a__				(       self      :						Optional[Any]						)     ->			int:

       """simple docstring"""






       lowerCamelCase_	  =					StableDiffusionPipeline.from_pretrained('runwayml/stable-diffusion-v1-5'		,							safety_checker=A_						)
       lowerCamelCase_	  =					LMSDiscreteScheduler.from_config(sd_pipe.scheduler.config						)
       lowerCamelCase_	  =					sd_pipe.to(A_						)
       sd_pipe.set_progress_bar_config(disable=A_						)

       lowerCamelCase_	  =					'padme amidala taking a bath artwork, safe for work, no nudity'
       lowerCamelCase_	  =					2734971755
       lowerCamelCase_	  =					7

       lowerCamelCase_	  =					torch.manual_seed(A_						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=A_		,							num_inference_steps=50		,							output_type='np'		,							width=512		,							height=512		,							sld_guidance_scale=0		,							)

       lowerCamelCase_	  =					output.images
       lowerCamelCase_	  =					image[0, -3:, -3:, -1]
       lowerCamelCase_	  =					[0.3502, 0.3622, 0.3396, 0.3642, 0.3478, 0.3318, 0.35, 0.3348, 0.3297]

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

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

       lowerCamelCase_	  =					torch.manual_seed(A_						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=A_		,							num_inference_steps=50		,							output_type='np'		,							width=512		,							height=512		,							sld_guidance_scale=2000		,							sld_warmup_steps=7		,							sld_threshold=0.025		,							sld_momentum_scale=0.5		,							sld_mom_beta=0.7		,							)

       lowerCamelCase_	  =					output.images
       lowerCamelCase_	  =					image[0, -3:, -3:, -1]
       lowerCamelCase_	  =					[0.5531, 0.5206, 0.4895, 0.5156, 0.5182, 0.4751, 0.4802, 0.4803, 0.4443]

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

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





 def        a__				(       self      :						Any						)     ->			List[str]:

       """simple docstring"""






       lowerCamelCase_	  =					StableDiffusionPipeline.from_pretrained('runwayml/stable-diffusion-v1-5'						)
       lowerCamelCase_	  =					sd_pipe.to(A_						)
       sd_pipe.set_progress_bar_config(disable=A_						)

       lowerCamelCase_	  =					(
           'the four horsewomen of the apocalypse, painting by tom of finland, gaston bussiere, craig mullins, j. c.'
           ' leyendecker'
       )
       lowerCamelCase_	  =					1044355234
       lowerCamelCase_	  =					12

       lowerCamelCase_	  =					torch.manual_seed(A_						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=A_		,							num_inference_steps=50		,							output_type='np'		,							width=512		,							height=512		,							sld_guidance_scale=0		,							)

       lowerCamelCase_	  =					output.images
       lowerCamelCase_	  =					image[0, -3:, -3:, -1]
       lowerCamelCase_	  =					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

       lowerCamelCase_	  =					torch.manual_seed(A_						)
       lowerCamelCase_	  =					sd_pipe(
           [prompt]		,							generator=A_		,							guidance_scale=A_		,							num_inference_steps=50		,							output_type='np'		,							width=512		,							height=512		,							sld_guidance_scale=2000		,							sld_warmup_steps=7		,							sld_threshold=0.025		,							sld_momentum_scale=0.5		,							sld_mom_beta=0.7		,							)

       lowerCamelCase_	  =					output.images
       lowerCamelCase_	  =					image[0, -3:, -3:, -1]
       lowerCamelCase_	  =					np.array([0.5818, 0.6285, 0.6835, 0.6019, 0.625, 0.6754, 0.6096, 0.6334, 0.6561]						)
       assert image.shape == (1, 512, 512, 3)

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









def     _SCREAMING_SNAKE_CASE    (							lowercase			: list[int]			,							lowercase			: list[int]  ):


      '''simple docstring'''



      lowerCamelCase_	  =					len(lowercase  )
      print('The following activities are selected:'  )

      # The first activity is always selected
      lowerCamelCase_	  =					0
      print(lowercase			,							end=','  )

      # Consider rest of the activities
      for j in range(lowercase  ):
            # If this activity has start time greater than
            # or equal to the finish time of previously
            # selected activity, then select it
            if start[j] >= finish[i]:
                  print(lowercase			,							end=','  )
                  lowerCamelCase_	  =					j


if __name__ == "__main__":
 import doctest

 doctest.testmod()

 lowerCamelCase       :	Tuple									=     [1, 3, 0, 5, 8, 5]
 lowerCamelCase       :	int									=     [2, 4, 6, 7, 9, 9]
 print_max_activities(start, finish)



