



'''simple docstring'''





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


if is_torch_available():
  import torch

if is_vision_available():
  from PIL import Image

  from transformers import ChineseCLIPImageProcessor






class __A    (						unittest.TestCase		):



 '''simple docstring'''







 def __init__(self				,     A				,     A=7				,     A=3				,     A=18				,     A=30				,     A=400				,     A=True				,     A=None				,     A=True				,     A=None				,     A=True				,     A=[0.48145466, 0.4578275, 0.40821073]				,     A=[0.26862954, 0.26130258, 0.27577711]				,     A=True				,     )					->  List[Any]:


      """simple docstring"""



      _a											=						size if size is not None else {'''height''': 224, '''width''': 224}
      _a											=						crop_size if crop_size is not None else {'''height''': 18, '''width''': 18}
      _a											=						parent
      _a											=						batch_size
      _a											=						num_channels
      _a											=						image_size
      _a											=						min_resolution
      _a											=						max_resolution
      _a											=						do_resize
      _a											=						size
      _a											=						do_center_crop
      _a											=						crop_size
      _a											=						do_normalize
      _a											=						image_mean
      _a											=						image_std
      _a											=						do_convert_rgb



 def       a__						(self )					->  Tuple:


      """simple docstring"""



      return {
          "do_resize": self.do_resize,
          "size": self.size,
          "do_center_crop": self.do_center_crop,
          "crop_size": self.crop_size,
          "do_normalize": self.do_normalize,
          "image_mean": self.image_mean,
          "image_std": self.image_std,
          "do_convert_rgb": self.do_convert_rgb,
      }



 def       a__						(self				,     A=False				,     A=False				,     A=False )					->  Union[str, Any]:


      """simple docstring"""



      assert not (numpify and torchify), "You cannot specify both numpy and PyTorch tensors at the same time"

      if equal_resolution:
           _a											=						[]
           for i in range(self.batch_size ):
                image_inputs.append(
                    np.random.randint(
                        255				,     size=(self.num_channels, self.max_resolution, self.max_resolution)				,     dtype=np.uinta ) )
      else:
           _a											=						[]
           for i in range(self.batch_size ):
                _a						,					_a											=						np.random.choice(np.arange(self.min_resolution				,     self.max_resolution )				,     2 )
                image_inputs.append(np.random.randint(255				,     size=(self.num_channels, width, height)				,     dtype=np.uinta ) )

      if not numpify and not torchify:
           # PIL expects the channel dimension as last dimension
           _a											=						[Image.fromarray(np.moveaxis(SCREAMING_SNAKE_CASE_				,     0				,     -1 ) ) for x in image_inputs]

      if torchify:
           _a											=						[torch.from_numpy(SCREAMING_SNAKE_CASE_ ) for x in image_inputs]

      return image_inputs






@require_torch
@require_vision
class __A    (						__lowerCamelCase     ,     unittest.TestCase		):



 '''simple docstring'''







 __lowerCamelCase					: Optional[int]    = ChineseCLIPImageProcessor if is_vision_available() else None



 def       a__						(self )					->  str:


      """simple docstring"""



      _a											=						ChineseCLIPImageProcessingTester(self				,     do_center_crop=SCREAMING_SNAKE_CASE_ )



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


      """simple docstring"""



      return self.image_processor_tester.prepare_image_processor_dict()



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


      """simple docstring"""



      _a											=						self.image_processing_class(**self.image_processor_dict )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_resize''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''size''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_center_crop''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''center_crop''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_normalize''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''image_mean''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''image_std''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_convert_rgb''' ) )



 def       a__						(self )					->  Tuple:


      """simple docstring"""



      _a											=						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''': 18, '''width''': 18} )

      _a											=						self.image_processing_class.from_dict(self.image_processor_dict				,     size=42				,     crop_size=84 )
      self.assertEqual(image_processor.size				,     {'''shortest_edge''': 42} )
      self.assertEqual(image_processor.crop_size				,     {'''height''': 84, '''width''': 84} )



 def       a__						(self )					->  str:


      """simple docstring"""



      pass



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


      """simple docstring"""



      _a											=						self.image_processing_class(**self.image_processor_dict )
      # create random PIL images
      _a											=						self.image_processor_tester.prepare_inputs(equal_resolution=SCREAMING_SNAKE_CASE_ )
      for image in image_inputs:
           self.assertIsInstance(SCREAMING_SNAKE_CASE_				,     Image.Image )

      # Test not batched input
      _a											=						image_processing(image_inputs[0]				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              1,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )

      # Test batched
      _a											=						image_processing(SCREAMING_SNAKE_CASE_				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              self.image_processor_tester.batch_size,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )



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


      """simple docstring"""



      _a											=						self.image_processing_class(**self.image_processor_dict )
      # create random numpy tensors
      _a											=						self.image_processor_tester.prepare_inputs(equal_resolution=SCREAMING_SNAKE_CASE_				,     numpify=SCREAMING_SNAKE_CASE_ )
      for image in image_inputs:
           self.assertIsInstance(SCREAMING_SNAKE_CASE_				,     np.ndarray )

      # Test not batched input
      _a											=						image_processing(image_inputs[0]				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              1,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )

      # Test batched
      _a											=						image_processing(SCREAMING_SNAKE_CASE_				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              self.image_processor_tester.batch_size,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )



 def       a__						(self )					->  int:


      """simple docstring"""



      _a											=						self.image_processing_class(**self.image_processor_dict )
      # create random PyTorch tensors
      _a											=						self.image_processor_tester.prepare_inputs(equal_resolution=SCREAMING_SNAKE_CASE_				,     torchify=SCREAMING_SNAKE_CASE_ )
      for image in image_inputs:
           self.assertIsInstance(SCREAMING_SNAKE_CASE_				,     torch.Tensor )

      # Test not batched input
      _a											=						image_processing(image_inputs[0]				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              1,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )

      # Test batched
      _a											=						image_processing(SCREAMING_SNAKE_CASE_				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              self.image_processor_tester.batch_size,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )






@require_torch
@require_vision
class __A    (						__lowerCamelCase     ,     unittest.TestCase		):



 '''simple docstring'''







 __lowerCamelCase					: int    = ChineseCLIPImageProcessor if is_vision_available() else None



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


      """simple docstring"""



      _a											=						ChineseCLIPImageProcessingTester(self				,     num_channels=4				,     do_center_crop=SCREAMING_SNAKE_CASE_ )
      _a											=						3



 @property
 def       a__						(self )					->  int:


      """simple docstring"""



      return self.image_processor_tester.prepare_image_processor_dict()



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


      """simple docstring"""



      _a											=						self.image_processing_class(**self.image_processor_dict )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_resize''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''size''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_center_crop''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''center_crop''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_normalize''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''image_mean''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''image_std''' ) )
      self.assertTrue(hasattr(SCREAMING_SNAKE_CASE_				,     '''do_convert_rgb''' ) )



 def       a__						(self )					->  Dict:


      """simple docstring"""



      pass



 def       a__						(self )					->  Dict:


      """simple docstring"""



      _a											=						self.image_processing_class(**self.image_processor_dict )
      # create random PIL images
      _a											=						self.image_processor_tester.prepare_inputs(equal_resolution=SCREAMING_SNAKE_CASE_ )
      for image in image_inputs:
           self.assertIsInstance(SCREAMING_SNAKE_CASE_				,     Image.Image )

      # Test not batched input
      _a											=						image_processing(image_inputs[0]				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              1,
              self.expected_encoded_image_num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )

      # Test batched
      _a											=						image_processing(SCREAMING_SNAKE_CASE_				,     return_tensors='''pt''' ).pixel_values
      self.assertEqual(
          encoded_images.shape				,     (
              self.image_processor_tester.batch_size,
              self.expected_encoded_image_num_channels,
              self.image_processor_tester.crop_size['''height'''],
              self.image_processor_tester.crop_size['''width'''],
          )				,     )








'''simple docstring'''





import unittest

import numpy as np
import torch
from torch import nn
from transformers import (
    CLIPImageProcessor,
    CLIPTextConfig,
    CLIPTextModelWithProjection,
    CLIPTokenizer,
    CLIPVisionConfig,
    CLIPVisionModelWithProjection,
)

from diffusers import KandinskyVaaPriorPipeline, PriorTransformer, UnCLIPScheduler
from diffusers.utils import torch_device
from diffusers.utils.testing_utils import enable_full_determinism, skip_mps

from ..test_pipelines_common import PipelineTesterMixin


enable_full_determinism()






class __A    (						A     ,     unittest.TestCase		):



 '''simple docstring'''







 __lowerCamelCase					: Dict    = KandinskyVaaPriorPipeline
 __lowerCamelCase					: List[str]    = ['prompt']
 __lowerCamelCase					: str    = ['prompt', 'negative_prompt']
 __lowerCamelCase					: Union[str, Any]    = [
     'num_images_per_prompt',
     'generator',
     'num_inference_steps',
     'latents',
     'negative_prompt',
     'guidance_scale',
     'output_type',
     'return_dict',
 ]
 __lowerCamelCase					: Union[str, Any]    = False



 @property
 def       a__						(self )					->  Tuple:


      """simple docstring"""



      return 32



 @property
 def       a__						(self )					->  int:


      """simple docstring"""



      return 32



 @property
 def       a__						(self )					->  int:


      """simple docstring"""



      return self.time_input_dim



 @property
 def       a__						(self )					->  Any:


      """simple docstring"""



      return self.time_input_dim * 4



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


      """simple docstring"""



      return 100



 @property
 def       a__						(self )					->  str:


      """simple docstring"""



      _a											=						CLIPTokenizer.from_pretrained('''hf-internal-testing/tiny-random-clip''' )
      return tokenizer



 @property
 def       a__						(self )					->  int:


      """simple docstring"""



      torch.manual_seed(0 )
      _a											=						CLIPTextConfig(
          bos_token_id=0				,     eos_token_id=2				,     hidden_size=self.text_embedder_hidden_size				,     projection_dim=self.text_embedder_hidden_size				,     intermediate_size=37				,     layer_norm_eps=1E-05				,     num_attention_heads=4				,     num_hidden_layers=5				,     pad_token_id=1				,     vocab_size=1_000				,     )
      return CLIPTextModelWithProjection(A )



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


      """simple docstring"""



      torch.manual_seed(0 )

      _a											=						{
          '''num_attention_heads''': 2,
          '''attention_head_dim''': 12,
          '''embedding_dim''': self.text_embedder_hidden_size,
          '''num_layers''': 1,
      }

      _a											=						PriorTransformer(**A )
      # clip_std and clip_mean is initialized to be 0 so PriorTransformer.post_process_latents will always return 0 - set clip_std to be 1 so it won't return 0
      _a											=						nn.Parameter(torch.ones(model.clip_std.shape ) )
      return model



 @property
 def       a__						(self )					->  str:


      """simple docstring"""



      torch.manual_seed(0 )
      _a											=						CLIPVisionConfig(
          hidden_size=self.text_embedder_hidden_size				,     image_size=224				,     projection_dim=self.text_embedder_hidden_size				,     intermediate_size=37				,     num_attention_heads=4				,     num_channels=3				,     num_hidden_layers=5				,     patch_size=14				,     )

      _a											=						CLIPVisionModelWithProjection(A )
      return model



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


      """simple docstring"""



      _a											=						CLIPImageProcessor(
          crop_size=224				,     do_center_crop=A				,     do_normalize=A				,     do_resize=A				,     image_mean=[0.48145466, 0.4578275, 0.40821073]				,     image_std=[0.26862954, 0.26130258, 0.27577711]				,     resample=3				,     size=224				,     )

      return image_processor



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


      """simple docstring"""



      _a											=						self.dummy_prior
      _a											=						self.dummy_image_encoder
      _a											=						self.dummy_text_encoder
      _a											=						self.dummy_tokenizer
      _a											=						self.dummy_image_processor

      _a											=						UnCLIPScheduler(
          variance_type='''fixed_small_log'''				,     prediction_type='''sample'''				,     num_train_timesteps=1_000				,     clip_sample=A				,     clip_sample_range=10.0				,     )

      _a											=						{
          '''prior''': prior,
          '''image_encoder''': image_encoder,
          '''text_encoder''': text_encoder,
          '''tokenizer''': tokenizer,
          '''scheduler''': scheduler,
          '''image_processor''': image_processor,
      }

      return components



 def       a__						(self				,     A				,     A=0 )					->  Optional[int]:


      """simple docstring"""



      if str(A ).startswith('''mps''' ):
           _a											=						torch.manual_seed(A )
      else:
           _a											=						torch.Generator(device=A ).manual_seed(A )
      _a											=						{
          '''prompt''': '''horse''',
          '''generator''': generator,
          '''guidance_scale''': 4.0,
          '''num_inference_steps''': 2,
          '''output_type''': '''np''',
      }
      return inputs



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


      """simple docstring"""



      _a											=						'''cpu'''

      _a											=						self.get_dummy_components()

      _a											=						self.pipeline_class(**A )
      _a											=						pipe.to(A )

      pipe.set_progress_bar_config(disable=A )

      _a											=						pipe(**self.get_dummy_inputs(A ) )
      _a											=						output.image_embeds

      _a											=						pipe(
          **self.get_dummy_inputs(A )				,     return_dict=A				,     )[0]

      _a											=						image[0, -10:]
      _a											=						image_from_tuple[0, -10:]

      assert image.shape == (1, 32)

      _a											=						np.array(
          [-0.0532, 1.7120, 0.3656, -1.0852, -0.8946, -1.1756, 0.4348, 0.2482, 0.5146, -0.1156] )

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



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


      """simple docstring"""



      _a											=						torch_device == '''cpu'''
      _a											=						True
      _a											=						False

      self._test_inference_batch_single_identical(
          test_max_difference=A				,     relax_max_difference=A				,     test_mean_pixel_difference=A				,     )



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


      """simple docstring"""



      _a											=						torch_device == '''cpu'''
      _a											=						False

      self._test_attention_slicing_forward_pass(
          test_max_difference=A				,     test_mean_pixel_difference=A				,     )



