

import gc
import unittest

import numpy as np
import torch

from diffusers import StableDiffusionKDiffusionPipeline
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()



@slow
@require_torch_gpu
class    _a						(unittest.TestCase    ):


					'''simple docstring'''






					def   __A      (			self      ):
						# clean up the VRAM after each test
						super().tearDown()
						gc.collect()
						torch.cuda.empty_cache()






					def   __A      (			self      ):
						A__							:   Optional[int]					       =		StableDiffusionKDiffusionPipeline.from_pretrained("""CompVis/stable-diffusion-v1-4"""      )
						A__							:   Optional[int]					       =		sd_pipe.to(A__      )
						sd_pipe.set_progress_bar_config(disable=A__      )

						sd_pipe.set_scheduler("""sample_euler"""      )

						A__							:   Dict					       =		"""A painting of a squirrel eating a burger"""
						A__							:   Optional[int]					       =		torch.manual_seed(0      )
						A__							:   str					       =		sd_pipe([prompt]   ,	generator=A__   ,	guidance_scale=9.0   ,	num_inference_steps=20   ,	output_type="""np"""      )

						A__							:   Any					       =		output.images

						A__							:   Optional[Any]					       =		image[0, -3:, -3:, -1]

						assert image.shape == (1, 512, 512, 3)
						A__							:   List[str]					       =		np.array([0.0_4_4_7, 0.0_4_9_2, 0.0_4_6_8, 0.0_4_0_8, 0.0_3_8_3, 0.0_4_0_8, 0.0_3_5_4, 0.0_3_8_0, 0.0_3_3_9]      )

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






					def   __A      (			self      ):
						A__							:   Union[str, Any]					       =		StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base"""      )
						A__							:   Any					       =		sd_pipe.to(A__      )
						sd_pipe.set_progress_bar_config(disable=A__      )

						sd_pipe.set_scheduler("""sample_euler"""      )

						A__							:   List[str]					       =		"""A painting of a squirrel eating a burger"""
						A__							:   int					       =		torch.manual_seed(0      )
						A__							:   Any					       =		sd_pipe([prompt]   ,	generator=A__   ,	guidance_scale=9.0   ,	num_inference_steps=20   ,	output_type="""np"""      )

						A__							:   Dict					       =		output.images

						A__							:   List[str]					       =		image[0, -3:, -3:, -1]

						assert image.shape == (1, 512, 512, 3)
						A__							:   List[str]					       =		np.array([0.1_2_3_7, 0.1_3_2_0, 0.1_4_3_8, 0.1_3_5_9, 0.1_3_9_0, 0.1_1_3_2, 0.1_2_7_7, 0.1_1_7_5, 0.1_1_1_2]      )

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






					def   __A      (			self      ):
						A__							:   Any					       =		StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base"""      )
						A__							:   List[Any]					       =		sd_pipe.to(A__      )
						sd_pipe.set_progress_bar_config(disable=A__      )

						sd_pipe.set_scheduler("""sample_dpmpp_2m"""      )

						A__							:   int					       =		"""A painting of a squirrel eating a burger"""
						A__							:   List[Any]					       =		torch.manual_seed(0      )
						A__							:   Tuple					       =		sd_pipe(
						    [prompt]   ,	generator=A__   ,	guidance_scale=7.5   ,	num_inference_steps=15   ,	output_type="""np"""   ,	use_karras_sigmas=A__   ,	)

						A__							:   List[Any]					       =		output.images

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

						assert image.shape == (1, 512, 512, 3)
						A__							:   str					       =		np.array(
						    [0.1_1_3_8_1_6_8_9, 0.1_2_1_1_2_9_2_1, 0.1_3_8_9_4_5_7, 0.1_2_5_4_9_6_0_6, 0.1_2_4_4_9_6_4, 0.1_0_8_3_1_5_1_7, 0.1_1_5_6_2_8_6_6, 0.1_0_8_6_7_8_1_6, 0.1_0_4_9_9_0_4_8]      )

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






from argparse import ArgumentParser

from . import BaseTransformersCLICommand

def 						UpperCamelCase (lowercase_:			int )					->				str:
	return DownloadCommand(args.model   ,				args.cache_dir   ,				args.force   ,				args.trust_remote_code )



class    _a						(__magic_name__    ):


					'''simple docstring'''






					@staticmethod
					def   __A      (			A__      ):
						A__							:   Any					       =		parser.add_parser("""download"""      )
						download_parser.add_argument(
						    """--cache-dir"""   ,	type=A__   ,	default=A__   ,	help="""Path to location to store the models"""      )
						download_parser.add_argument(
						    """--force"""   ,	action="""store_true"""   ,	help="""Force the model to be download even if already in cache-dir"""      )
						download_parser.add_argument(
						    """--trust-remote-code"""   ,	action="""store_true"""   ,	help="""Whether or not to allow for custom models defined on the Hub in their own modeling files. Use only if you've reviewed the code as it will execute on your local machine"""   ,	)
						download_parser.add_argument("""model"""   ,	type=A__   ,	help="""Name of the model to download"""      )
						download_parser.set_defaults(func=A__      )






					def __init__(			self   ,	A__   ,	A__   ,	A__   ,	A__      ):
						A__							:   Union[str, Any]					       =		model
						A__							:   Dict					       =		cache
						A__							:   str					       =		force
						A__							:   Tuple					       =		trust_remote_code






					def   __A      (			self      ):
						from ..models.auto import AutoModel, AutoTokenizer

						AutoModel.from_pretrained(
						    self._model   ,	cache_dir=self._cache   ,	force_download=self._force   ,	trust_remote_code=self._trust_remote_code      )
						AutoTokenizer.from_pretrained(
						    self._model   ,	cache_dir=self._cache   ,	force_download=self._force   ,	trust_remote_code=self._trust_remote_code      )



