






"""simple docstring"""





import random
import unittest

import numpy as np

from transformers.testing_utils import require_torch, require_vision
from transformers.utils import is_torch_available, is_vision_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
  import torch

if is_vision_available():
  import PIL

  from transformers import FlavaImageProcessor
  from transformers.image_utils import PILImageResampling
  from transformers.models.flava.image_processing_flava import (
      FLAVA_CODEBOOK_MEAN,
      FLAVA_CODEBOOK_STD,
      FLAVA_IMAGE_MEAN,
      FLAVA_IMAGE_STD,
  )
else:
  UpperCamelCase					=     UpperCamelCase					=     UpperCamelCase					=     UpperCamelCase					=     None







class 						_a  (		unittest.TestCase       ):





   '''simple docstring'''






   def __init__(       self					, UpperCAmelCase_					, UpperCAmelCase_=7					, UpperCAmelCase_=3					, UpperCAmelCase_=30					, UpperCAmelCase_=400					, UpperCAmelCase_=True					, UpperCAmelCase_=None					, UpperCAmelCase_=True					, UpperCAmelCase_=None					, UpperCAmelCase_=None					, UpperCAmelCase_=True					, UpperCAmelCase_=1 / 255					, UpperCAmelCase_=True					, UpperCAmelCase_=FLAVA_IMAGE_MEAN					, UpperCAmelCase_=FLAVA_IMAGE_STD					, UpperCAmelCase_=14					, UpperCAmelCase_=75					, UpperCAmelCase_=None					, UpperCAmelCase_=16					, UpperCAmelCase_=0.3					, UpperCAmelCase_=None					, UpperCAmelCase_=True					, UpperCAmelCase_=None					, UpperCAmelCase_=None					, UpperCAmelCase_=True					, UpperCAmelCase_=None					, UpperCAmelCase_=True					, UpperCAmelCase_=True					, UpperCAmelCase_=FLAVA_CODEBOOK_MEAN					, UpperCAmelCase_=FLAVA_CODEBOOK_STD					, )			->   Union[str, Any]:




          '''simple docstring'''




          lowercase__:							List[Any]         =     size if size is not None else {"height": 224, "width": 224}
          lowercase__:							Union[str, Any]         =     crop_size if crop_size is not None else {"height": 224, "width": 224}
          lowercase__:							int         =     codebook_size if codebook_size is not None else {"height": 112, "width": 112}
          lowercase__:							int         =     codebook_crop_size if codebook_crop_size is not None else {"height": 112, "width": 112}

          lowercase__:							List[str]         =     parent
          lowercase__:							int         =     batch_size
          lowercase__:							List[str]         =     num_channels
          lowercase__:							Any         =     do_resize
          lowercase__:							int         =     do_rescale
          lowercase__:							Optional[int]         =     rescale_factor
          lowercase__:							int         =     min_resolution
          lowercase__:							int         =     max_resolution
          lowercase__:							str         =     size
          lowercase__:							Union[str, Any]         =     resample if resample is not None else PILImageResampling.BICUBIC
          lowercase__:							Dict         =     do_normalize
          lowercase__:							Any         =     image_mean
          lowercase__:							Any         =     image_std
          lowercase__:							Optional[Any]         =     do_center_crop
          lowercase__:							Any         =     crop_size

          lowercase__:							List[str]         =     input_size_patches
          lowercase__:							List[Any]         =     total_mask_patches
          lowercase__:							Dict         =     mask_group_max_patches
          lowercase__:							Optional[int]         =     mask_group_min_patches
          lowercase__:							str         =     mask_group_min_aspect_ratio
          lowercase__:							Any         =     mask_group_max_aspect_ratio

          lowercase__:							List[Any]         =     codebook_do_resize
          lowercase__:							str         =     codebook_size
          lowercase__:							Dict         =     codebook_resample if codebook_resample is not None else PILImageResampling.LANCZOS
          lowercase__:							Optional[Any]         =     codebook_do_center_crop
          lowercase__:							Tuple         =     codebook_crop_size
          lowercase__:							List[str]         =     codebook_do_map_pixels
          lowercase__:							List[Any]         =     codebook_do_normalize
          lowercase__:							List[Any]         =     codebook_image_mean
          lowercase__:							Any         =     codebook_image_std





   def __lowercase							(       self)			->   Any:




          '''simple docstring'''




          return {
              "image_mean": self.image_mean,
              "image_std": self.image_std,
              "do_normalize": self.do_normalize,
              "do_resize": self.do_resize,
              "size": self.size,
              "resample": self.resample,
              "do_rescale": self.do_rescale,
              "rescale_factor": self.rescale_factor,
              "do_center_crop": self.do_center_crop,
              "crop_size": self.crop_size,
              "input_size_patches": self.input_size_patches,
              "total_mask_patches": self.total_mask_patches,
              "mask_group_max_patches": self.mask_group_max_patches,
              "mask_group_min_patches": self.mask_group_min_patches,
              "mask_group_min_aspect_ratio": self.mask_group_min_aspect_ratio,
              "mask_group_max_aspect_ratio": self.mask_group_min_aspect_ratio,
              "codebook_do_resize": self.codebook_do_resize,
              "codebook_size": self.codebook_size,
              "codebook_resample": self.codebook_resample,
              "codebook_do_center_crop": self.codebook_do_center_crop,
              "codebook_crop_size": self.codebook_crop_size,
              "codebook_do_map_pixels": self.codebook_do_map_pixels,
              "codebook_do_normalize": self.codebook_do_normalize,
              "codebook_image_mean": self.codebook_image_mean,
              "codebook_image_std": self.codebook_image_std,
          }





   def __lowercase							(       self)			->   List[Any]:




          '''simple docstring'''




          return (self.size["height"], self.size["width"])





   def __lowercase							(       self)			->   Union[str, Any]:




          '''simple docstring'''




          return (
              (self.input_size_patches, self.input_size_patches)
              if not isinstance(self.input_size_patches					, UpperCAmelCase_)
              else self.input_size_patches
          )





   def __lowercase							(       self)			->   Dict:




          '''simple docstring'''




          return (self.codebook_size["height"], self.codebook_size["width"])







@require_torch
@require_vision
class 						_a  (		lowercase_							,	unittest.TestCase       ):





   '''simple docstring'''






   UpperCamelCase__     	=							FlavaImageProcessor if is_vision_available() else None
   UpperCamelCase__     	=							None





   def __lowercase							(       self)			->   List[Any]:




          '''simple docstring'''




          lowercase__:							int         =     FlavaImageProcessingTester(self)





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




          '''simple docstring'''




          return self.image_processor_tester.prepare_image_processor_dict()





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




          '''simple docstring'''




          lowercase__:							Optional[Any]         =     self.image_processing_class(**self.image_processor_dict)
          self.assertTrue(hasattr(UpperCAmelCase_					, "image_mean"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "image_std"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "do_normalize"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "do_resize"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "resample"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "crop_size"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "do_center_crop"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "do_rescale"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "rescale_factor"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "masking_generator"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_do_resize"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_size"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_resample"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_do_center_crop"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_crop_size"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_do_map_pixels"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_do_normalize"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_image_mean"))
          self.assertTrue(hasattr(UpperCAmelCase_					, "codebook_image_std"))





   def __lowercase							(       self)			->   Union[str, Any]:




          '''simple docstring'''




          lowercase__:							Optional[int]         =     self.image_processing_class.from_dict(self.image_processor_dict)
          self.assertEqual(image_processor.size					, {"height": 224, "width": 224})
          self.assertEqual(image_processor.crop_size					, {"height": 224, "width": 224})
          self.assertEqual(image_processor.codebook_size					, {"height": 112, "width": 112})
          self.assertEqual(image_processor.codebook_crop_size					, {"height": 112, "width": 112})

          lowercase__:							Dict         =     self.image_processing_class.from_dict(
              self.image_processor_dict					, size=42					, crop_size=84					, codebook_size=33					, codebook_crop_size=66)
          self.assertEqual(image_processor.size					, {"height": 42, "width": 42})
          self.assertEqual(image_processor.crop_size					, {"height": 84, "width": 84})
          self.assertEqual(image_processor.codebook_size					, {"height": 33, "width": 33})
          self.assertEqual(image_processor.codebook_crop_size					, {"height": 66, "width": 66})





   def __lowercase							(       self)			->   Tuple:




          '''simple docstring'''




          pass





   def __lowercase							(       self)			->   int:




          '''simple docstring'''




          lowercase__:							Dict         =     self.image_processing_class(**self.image_processor_dict)
          # create random PIL images
          lowercase__:							Any         =     prepare_image_inputs(self.image_processor_tester					, equal_resolution=UpperCAmelCase_)
          for image in image_inputs:
                 self.assertIsInstance(UpperCAmelCase_					, PIL.Image.Image)

          # Test not batched input
          lowercase__:							Tuple         =     image_processing(image_inputs[0]					, return_tensors="pt")

          # Test no bool masked pos
          self.assertFalse("bool_masked_pos" in encoded_images)

          lowercase__    ,      lowercase__:							Optional[Any]         =     self.image_processor_tester.get_expected_image_size()

          self.assertEqual(
              encoded_images.pixel_values.shape					, (1, self.image_processor_tester.num_channels, expected_height, expected_width)					, )

          # Test batched
          lowercase__:							List[Any]         =     image_processing(UpperCAmelCase_					, return_tensors="pt")
          lowercase__    ,      lowercase__:							Optional[Any]         =     self.image_processor_tester.get_expected_image_size()

          # Test no bool masked pos
          self.assertFalse("bool_masked_pos" in encoded_images)

          self.assertEqual(
              encoded_images.pixel_values.shape					, (
                  self.image_processor_tester.batch_size,
                  self.image_processor_tester.num_channels,
                  expected_height,
                  expected_width,
              )					, )





   def __lowercase							(       self					, UpperCAmelCase_					, UpperCAmelCase_)			->   int:




          '''simple docstring'''




          lowercase__:							Dict         =     self.image_processing_class(**self.image_processor_dict)
          # create random tensors
          lowercase__:							Any         =     prepare_image_inputs(self.image_processor_tester					, equal_resolution=UpperCAmelCase_					, **UpperCAmelCase_)
          for image in image_inputs:
                 self.assertIsInstance(UpperCAmelCase_					, UpperCAmelCase_)

          # Test not batched input
          lowercase__:							Any         =     image_processing(image_inputs[0]					, return_tensors="pt")

          lowercase__    ,      lowercase__:							Optional[int]         =     self.image_processor_tester.get_expected_image_size()
          self.assertEqual(
              encoded_images.pixel_values.shape					, (1, self.image_processor_tester.num_channels, expected_height, expected_width)					, )

          lowercase__:							List[str]         =     image_processing(UpperCAmelCase_					, return_image_mask=UpperCAmelCase_					, return_tensors="pt")

          lowercase__    ,      lowercase__:							int         =     self.image_processor_tester.get_expected_image_size()
          self.assertEqual(
              encoded_images.pixel_values.shape					, (
                  self.image_processor_tester.batch_size,
                  self.image_processor_tester.num_channels,
                  expected_height,
                  expected_width,
              )					, )

          lowercase__    ,      lowercase__:							Union[str, Any]         =     self.image_processor_tester.get_expected_mask_size()
          self.assertEqual(
              encoded_images.bool_masked_pos.shape					, (
                  self.image_processor_tester.batch_size,
                  expected_height,
                  expected_width,
              )					, )

          # Test batched
          lowercase__:							Any         =     image_processing(UpperCAmelCase_					, return_tensors="pt").pixel_values

          lowercase__    ,      lowercase__:							Any         =     self.image_processor_tester.get_expected_image_size()
          self.assertEqual(
              encoded_images.shape					, (
                  self.image_processor_tester.batch_size,
                  self.image_processor_tester.num_channels,
                  expected_height,
                  expected_width,
              )					, )

          # Test masking
          lowercase__:							str         =     image_processing(UpperCAmelCase_					, return_image_mask=UpperCAmelCase_					, return_tensors="pt")

          lowercase__    ,      lowercase__:							Dict         =     self.image_processor_tester.get_expected_image_size()
          self.assertEqual(
              encoded_images.pixel_values.shape					, (
                  self.image_processor_tester.batch_size,
                  self.image_processor_tester.num_channels,
                  expected_height,
                  expected_width,
              )					, )

          lowercase__    ,      lowercase__:							str         =     self.image_processor_tester.get_expected_mask_size()
          self.assertEqual(
              encoded_images.bool_masked_pos.shape					, (
                  self.image_processor_tester.batch_size,
                  expected_height,
                  expected_width,
              )					, )





   def __lowercase							(       self)			->   Dict:




          '''simple docstring'''




          self._test_call_framework(np.ndarray					, prepare_kwargs={"numpify": True})





   def __lowercase							(       self)			->   int:




          '''simple docstring'''




          self._test_call_framework(torch.Tensor					, prepare_kwargs={"torchify": True})





   def __lowercase							(       self)			->   str:




          '''simple docstring'''




          random.seed(1_234)
          lowercase__:							List[Any]         =     self.image_processing_class(**self.image_processor_dict)
          lowercase__:							List[str]         =     prepare_image_inputs(self.image_processor_tester					, equal_resolution=UpperCAmelCase_					, torchify=UpperCAmelCase_)

          # Test not batched input
          lowercase__:							List[Any]         =     image_processing(image_inputs[0]					, return_image_mask=UpperCAmelCase_					, return_tensors="pt")
          self.assertEqual(encoded_images.bool_masked_pos.sum().item()					, 75)





   def __lowercase							(       self)			->   Optional[int]:




          '''simple docstring'''




          lowercase__:							Any         =     self.image_processing_class(**self.image_processor_dict)
          # create random PIL images
          lowercase__:							Union[str, Any]         =     prepare_image_inputs(self.image_processor_tester					, equal_resolution=UpperCAmelCase_)
          for image in image_inputs:
                 self.assertIsInstance(UpperCAmelCase_					, PIL.Image.Image)

          # Test not batched input
          lowercase__:							int         =     image_processing(image_inputs[0]					, return_codebook_pixels=UpperCAmelCase_					, return_tensors="pt")
          lowercase__    ,      lowercase__:							Dict         =     self.image_processor_tester.get_expected_codebook_image_size()
          self.assertEqual(
              encoded_images.codebook_pixel_values.shape					, (1, self.image_processor_tester.num_channels, expected_height, expected_width)					, )

          # Test batched
          lowercase__:							Union[str, Any]         =     image_processing(UpperCAmelCase_					, return_codebook_pixels=UpperCAmelCase_					, return_tensors="pt")
          lowercase__    ,      lowercase__:							int         =     self.image_processor_tester.get_expected_codebook_image_size()
          self.assertEqual(
              encoded_images.codebook_pixel_values.shape					, (
                  self.image_processor_tester.batch_size,
                  self.image_processor_tester.num_channels,
                  expected_height,
                  expected_width,
              )					, )












"""simple docstring"""
import gc
import random
import unittest

import numpy as np
import torch
from transformers import XLMRobertaTokenizerFast

from diffusers import DDIMScheduler, KandinskyPipeline, KandinskyPriorPipeline, UNetaDConditionModel, VQModel
from diffusers.pipelines.kandinsky.text_encoder import MCLIPConfig, MultilingualCLIP
from diffusers.utils import floats_tensor, load_numpy, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..test_pipelines_common import PipelineTesterMixin, assert_mean_pixel_difference


enable_full_determinism()







class  _SCREAMING_SNAKE_CASE       (     SCREAMING_SNAKE_CASE__			,				unittest.TestCase				):



 '''simple docstring'''





 __UpperCAmelCase		   =							KandinskyPipeline
 __UpperCAmelCase		   =							[
     """prompt""",
     """image_embeds""",
     """negative_image_embeds""",
 ]
 __UpperCAmelCase		   =							["""prompt""", """negative_prompt""", """image_embeds""", """negative_image_embeds"""]
 __UpperCAmelCase		   =							[
     """generator""",
     """height""",
     """width""",
     """latents""",
     """guidance_scale""",
     """negative_prompt""",
     """num_inference_steps""",
     """return_dict""",
     """guidance_scale""",
     """num_images_per_prompt""",
     """output_type""",
     """return_dict""",
 ]
 __UpperCAmelCase		   =							False






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  return 32






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  return 32






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  return self.time_input_dim






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  return self.time_input_dim * 4






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  return 1_00






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  _UpperCamelCase      :	Tuple					      =  XLMRobertaTokenizerFast.from_pretrained("YiYiXu/tiny-random-mclip-base"   )
  return tokenizer






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  torch.manual_seed(0   )
  _UpperCamelCase      :	List[str]					      =  MCLIPConfig(
      numDims=self.cross_attention_dim					,     transformerDimensions=self.text_embedder_hidden_size					,     hidden_size=self.text_embedder_hidden_size					,     intermediate_size=37					,     num_attention_heads=4					,     num_hidden_layers=5					,     vocab_size=10_05					,     )

  _UpperCamelCase      :	Optional[Any]					      =  MultilingualCLIP(lowerCAmelCase__   )
  _UpperCamelCase      :	List[str]					      =  text_encoder.eval()

  return text_encoder






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  torch.manual_seed(0   )

  _UpperCamelCase      :	Dict					      =  {
      "in_channels": 4,
      # Out channels is double in channels because predicts mean and variance
      "out_channels": 8,
      "addition_embed_type": "text_image",
      "down_block_types": ("ResnetDownsampleBlock2D", "SimpleCrossAttnDownBlock2D"),
      "up_block_types": ("SimpleCrossAttnUpBlock2D", "ResnetUpsampleBlock2D"),
      "mid_block_type": "UNetMidBlock2DSimpleCrossAttn",
      "block_out_channels": (self.block_out_channels_a, self.block_out_channels_a * 2),
      "layers_per_block": 1,
      "encoder_hid_dim": self.text_embedder_hidden_size,
      "encoder_hid_dim_type": "text_image_proj",
      "cross_attention_dim": self.cross_attention_dim,
      "attention_head_dim": 4,
      "resnet_time_scale_shift": "scale_shift",
      "class_embed_type": None,
  }

  _UpperCamelCase      :	int					      =  UNetaDConditionModel(**lowerCAmelCase__   )
  return model






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  return {
      "block_out_channels": [32, 64],
      "down_block_types": ["DownEncoderBlock2D", "AttnDownEncoderBlock2D"],
      "in_channels": 3,
      "latent_channels": 4,
      "layers_per_block": 1,
      "norm_num_groups": 8,
      "norm_type": "spatial",
      "num_vq_embeddings": 12,
      "out_channels": 3,
      "up_block_types": [
          "AttnUpDecoderBlock2D",
          "UpDecoderBlock2D",
      ],
      "vq_embed_dim": 4,
  }






 @property
 def lowercase_      (self   ):

  '''simple docstring'''







  torch.manual_seed(0   )
  _UpperCamelCase      :	Dict					      =  VQModel(**self.dummy_movq_kwargs   )
  return model






 def lowercase_      (self   ):

  '''simple docstring'''







  _UpperCamelCase      :	List[str]					      =  self.dummy_text_encoder
  _UpperCamelCase      :	str					      =  self.dummy_tokenizer
  _UpperCamelCase      :	List[str]					      =  self.dummy_unet
  _UpperCamelCase      :	Tuple					      =  self.dummy_movq

  _UpperCamelCase      :	Dict					      =  DDIMScheduler(
      num_train_timesteps=10_00					,     beta_schedule="linear"					,     beta_start=0.0_0085					,     beta_end=0.012					,     clip_sample=lowerCAmelCase__					,     set_alpha_to_one=lowerCAmelCase__					,     steps_offset=1					,     prediction_type="epsilon"					,     thresholding=lowerCAmelCase__					,     )

  _UpperCamelCase      :	Any					      =  {
      "text_encoder": text_encoder,
      "tokenizer": tokenizer,
      "unet": unet,
      "scheduler": scheduler,
      "movq": movq,
  }
  return components






 def lowercase_      (self					,     lowerCAmelCase__					,     lowerCAmelCase__=0   ):

  '''simple docstring'''







  _UpperCamelCase      :	Dict					      =  floats_tensor((1, self.cross_attention_dim)					,     rng=random.Random(lowerCAmelCase__   )   ).to(lowerCAmelCase__   )
  _UpperCamelCase      :	int					      =  floats_tensor((1, self.cross_attention_dim)					,     rng=random.Random(seed + 1   )   ).to(lowerCAmelCase__   )
  if str(lowerCAmelCase__   ).startswith("mps"   ):
   _UpperCamelCase      :	Optional[Any]					      =  torch.manual_seed(lowerCAmelCase__   )
  else:
   _UpperCamelCase      :	List[Any]					      =  torch.Generator(device=lowerCAmelCase__   ).manual_seed(lowerCAmelCase__   )
  _UpperCamelCase      :	Optional[Any]					      =  {
      "prompt": "horse",
      "image_embeds": image_embeds,
      "negative_image_embeds": negative_image_embeds,
      "generator": generator,
      "height": 64,
      "width": 64,
      "guidance_scale": 4.0,
      "num_inference_steps": 2,
      "output_type": "np",
  }
  return inputs






 def lowercase_      (self   ):

  '''simple docstring'''







  _UpperCamelCase      :	Optional[Any]					      =  "cpu"

  _UpperCamelCase      :	Any					      =  self.get_dummy_components()

  _UpperCamelCase      :	Tuple					      =  self.pipeline_class(**lowerCAmelCase__   )
  _UpperCamelCase      :	Optional[int]					      =  pipe.to(lowerCAmelCase__   )

  pipe.set_progress_bar_config(disable=lowerCAmelCase__   )

  _UpperCamelCase      :	Union[str, Any]					      =  pipe(**self.get_dummy_inputs(lowerCAmelCase__   )   )
  _UpperCamelCase      :	Union[str, Any]					      =  output.images

  _UpperCamelCase      :	str					      =  pipe(
      **self.get_dummy_inputs(lowerCAmelCase__   )					,     return_dict=lowerCAmelCase__					,     )[0]

  _UpperCamelCase      :	Tuple					      =  image[0, -3:, -3:, -1]
  _UpperCamelCase      :	Optional[int]					      =  image_from_tuple[0, -3:, -3:, -1]

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

  _UpperCamelCase      :	Union[str, Any]					      =  np.array(
      [0.32_8663, 1.0, 0.2321_6873, 1.0, 0.9271_7564, 0.463_9046, 0.9689_4777, 0.3171_3378, 0.629_3953]   )

  assert (
      np.abs(image_slice.flatten() - expected_slice   ).max() < 1E-2
  ), F" expected_slice {expected_slice}, but got {image_slice.flatten()}"
  assert (
      np.abs(image_from_tuple_slice.flatten() - expected_slice   ).max() < 1E-2
  ), F" expected_slice {expected_slice}, but got {image_from_tuple_slice.flatten()}"







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



 '''simple docstring'''





 def lowercase_      (self   ):

  '''simple docstring'''







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






 def lowercase_      (self   ):

  '''simple docstring'''







  _UpperCamelCase      :	Tuple					      =  load_numpy(
      "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"
      "/kandinsky/kandinsky_text2img_cat_fp16.npy"   )

  _UpperCamelCase      :	Optional[int]					      =  KandinskyPriorPipeline.from_pretrained(
      "kandinsky-community/kandinsky-2-1-prior"					,     torch_dtype=torch.floataa   )
  pipe_prior.to(lowerCAmelCase__   )

  _UpperCamelCase      :	List[str]					      =  KandinskyPipeline.from_pretrained("kandinsky-community/kandinsky-2-1"					,     torch_dtype=torch.floataa   )
  _UpperCamelCase      :	List[Any]					      =  pipeline.to(lowerCAmelCase__   )
  pipeline.set_progress_bar_config(disable=lowerCAmelCase__   )

  _UpperCamelCase      :	Optional[Any]					      =  "red cat, 4k photo"

  _UpperCamelCase      :	str					      =  torch.Generator(device="cuda"   ).manual_seed(0   )
  _UpperCamelCase      ,	_UpperCamelCase      :	Optional[Any]					      =  pipe_prior(
      lowerCAmelCase__					,     generator=lowerCAmelCase__					,     num_inference_steps=5					,     negative_prompt=""					,     ).to_tuple()

  _UpperCamelCase      :	Optional[Any]					      =  torch.Generator(device="cuda"   ).manual_seed(0   )
  _UpperCamelCase      :	Any					      =  pipeline(
      lowerCAmelCase__					,     image_embeds=lowerCAmelCase__					,     negative_image_embeds=lowerCAmelCase__					,     generator=lowerCAmelCase__					,     num_inference_steps=1_00					,     output_type="np"					,     )

  _UpperCamelCase      :	Optional[Any]					      =  output.images[0]

  assert image.shape == (5_12, 5_12, 3)

  assert_mean_pixel_difference(lowerCAmelCase__					,     lowerCAmelCase__   )



