
import unittest

import numpy as np

from transformers.testing_utils import require_pytesseract, require_torch
from transformers.utils import is_pytesseract_available, is_torch_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
		import torch

if is_pytesseract_available():
		from PIL import Image

		from transformers import LayoutLMvaImageProcessor




class  lowerCamelCase__							(				unittest.TestCase):




	'''simple docstring'''




	def __init__(					self		:str     ,   a		:Optional[int]     ,   a		:List[str]=7     ,   a		:List[str]=3     ,   a		:Dict=1_8     ,   a		:Union[str, Any]=3_0     ,   a		:List[Any]=4_0_0     ,   a		:List[Any]=True     ,   a		:int=None     ,   a		:Optional[int]=True     ,   )		-> List[str]:
								__UpperCamelCase	:   Optional[int]			   =					size if size is not None else {"height": 1_8, "width": 1_8}
								__UpperCamelCase	:   Optional[int]			   =					parent
								__UpperCamelCase	:   List[str]			   =					batch_size
								__UpperCamelCase	:   List[str]			   =					num_channels
								__UpperCamelCase	:   int			   =					image_size
								__UpperCamelCase	:   int			   =					min_resolution
								__UpperCamelCase	:   Dict			   =					max_resolution
								__UpperCamelCase	:   Tuple			   =					do_resize
								__UpperCamelCase	:   int			   =					size
								__UpperCamelCase	:   List[str]			   =					apply_ocr







	def    _lowerCamelCase				(					self		:int						)		-> Dict:
								return {"do_resize": self.do_resize, "size": self.size, "apply_ocr": self.apply_ocr}




@require_torch
@require_pytesseract
class  lowerCamelCase__							(				__lowercase     ,						unittest.TestCase):




	'''simple docstring'''




	_A								=     LayoutLMvaImageProcessor if is_pytesseract_available() else None







	def    _lowerCamelCase				(					self		:Any						)		-> Any:
								__UpperCamelCase	:   int			   =					LayoutLMvaImageProcessingTester(self						)







	@property
	def    _lowerCamelCase				(					self		:Tuple						)		-> Optional[Any]:
								return self.image_processor_tester.prepare_image_processor_dict()







	def    _lowerCamelCase				(					self		:str						)		-> int:
								__UpperCamelCase	:   Dict			   =					self.image_processing_class(**self.image_processor_dict						)
								self.assertTrue(hasattr(a     ,   "do_resize"						)						)
								self.assertTrue(hasattr(a     ,   "size"						)						)
								self.assertTrue(hasattr(a     ,   "apply_ocr"						)						)







	def    _lowerCamelCase				(					self		:Dict						)		-> List[Any]:
								__UpperCamelCase	:   List[Any]			   =					self.image_processing_class.from_dict(self.image_processor_dict						)
								self.assertEqual(image_processor.size     ,   {"height": 1_8, "width": 1_8}						)

								__UpperCamelCase	:   Optional[int]			   =					self.image_processing_class.from_dict(self.image_processor_dict     ,   size=4_2						)
								self.assertEqual(image_processor.size     ,   {"height": 4_2, "width": 4_2}						)







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







	def    _lowerCamelCase				(					self		:int						)		-> List[Any]:
								# Initialize image_processing
								__UpperCamelCase	:   Optional[Any]			   =					self.image_processing_class(**self.image_processor_dict						)
								# create random PIL images
								__UpperCamelCase	:   Tuple			   =					prepare_image_inputs(self.image_processor_tester     ,   equal_resolution=a						)
								for image in image_inputs:
															self.assertIsInstance(a     ,   Image.Image						)

								# Test not batched input
								__UpperCamelCase	:   Union[str, Any]			   =					image_processing(image_inputs[0]     ,   return_tensors="pt"						)
								self.assertEqual(
								    encoding.pixel_values.shape     ,   (
								        1,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )     ,   )

								self.assertIsInstance(encoding.words     ,   a						)
								self.assertIsInstance(encoding.boxes     ,   a						)

								# Test batched
								__UpperCamelCase	:   str			   =					image_processing(a     ,   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.size["height"],
								        self.image_processor_tester.size["width"],
								    )     ,   )







	def    _lowerCamelCase				(					self		:Any						)		-> Union[str, Any]:
								# Initialize image_processing
								__UpperCamelCase	:   Union[str, Any]			   =					self.image_processing_class(**self.image_processor_dict						)
								# create random numpy tensors
								__UpperCamelCase	:   Tuple			   =					prepare_image_inputs(self.image_processor_tester     ,   equal_resolution=a     ,   numpify=a						)
								for image in image_inputs:
															self.assertIsInstance(a     ,   np.ndarray						)

								# Test not batched input
								__UpperCamelCase	:   Dict			   =					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.size["height"],
								        self.image_processor_tester.size["width"],
								    )     ,   )

								# Test batched
								__UpperCamelCase	:   List[str]			   =					image_processing(a     ,   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.size["height"],
								        self.image_processor_tester.size["width"],
								    )     ,   )







	def    _lowerCamelCase				(					self		:Tuple						)		-> str:
								# Initialize image_processing
								__UpperCamelCase	:   str			   =					self.image_processing_class(**self.image_processor_dict						)
								# create random PyTorch tensors
								__UpperCamelCase	:   int			   =					prepare_image_inputs(self.image_processor_tester     ,   equal_resolution=a     ,   torchify=a						)
								for image in image_inputs:
															self.assertIsInstance(a     ,   torch.Tensor						)

								# Test not batched input
								__UpperCamelCase	:   int			   =					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.size["height"],
								        self.image_processor_tester.size["width"],
								    )     ,   )

								# Test batched
								__UpperCamelCase	:   Tuple			   =					image_processing(a     ,   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.size["height"],
								        self.image_processor_tester.size["width"],
								    )     ,   )







	def    _lowerCamelCase				(					self		:Tuple						)		-> str:
								# with apply_OCR = True
								__UpperCamelCase	:   Union[str, Any]			   =					LayoutLMvaImageProcessor()

								from datasets import load_dataset

								__UpperCamelCase	:   Union[str, Any]			   =					load_dataset("hf-internal-testing/fixtures_docvqa"     ,   split="test"						)

								__UpperCamelCase	:   Dict			   =					Image.open(ds[0]["file"]						).convert("RGB"						)

								__UpperCamelCase	:   List[str]			   =					image_processing(a     ,   return_tensors="pt"						)

								self.assertEqual(encoding.pixel_values.shape     ,   (1, 3, 2_2_4, 2_2_4)						)
								self.assertEqual(len(encoding.words						)     ,   len(encoding.boxes						)						)

								# fmt: off
								# the words and boxes were obtained with Tesseract 4.1.1
								__UpperCamelCase	:   int			   =					[["11:14", "to", "11:39", "a.m", "11:39", "to", "11:44", "a.m.", "11:44", "a.m.", "to", "12:25", "p.m.", "12:25", "to", "12:58", "p.m.", "12:58", "to", "4:00", "p.m.", "2:00", "to", "5:00", "p.m.", "Coffee", "Break", "Coffee", "will", "be", "served", "for", "men", "and", "women", "in", "the", "lobby", "adjacent", "to", "exhibit", "area.", "Please", "move", "into", "exhibit", "area.", "(Exhibits", "Open)", "TRRF", "GENERAL", "SESSION", "(PART", "|)", "Presiding:", "Lee", "A.", "Waller", "TRRF", "Vice", "President", "“Introductory", "Remarks”", "Lee", "A.", "Waller,", "TRRF", "Vice", "Presi-", "dent", "Individual", "Interviews", "with", "TRRF", "Public", "Board", "Members", "and", "Sci-", "entific", "Advisory", "Council", "Mem-", "bers", "Conducted", "by", "TRRF", "Treasurer", "Philip", "G.", "Kuehn", "to", "get", "answers", "which", "the", "public", "refrigerated", "warehousing", "industry", "is", "looking", "for.", "Plus", "questions", "from", "the", "floor.", "Dr.", "Emil", "M.", "Mrak,", "University", "of", "Cal-", "ifornia,", "Chairman,", "TRRF", "Board;", "Sam", "R.", "Cecil,", "University", "of", "Georgia", "College", "of", "Agriculture;", "Dr.", "Stanley", "Charm,", "Tufts", "University", "School", "of", "Medicine;", "Dr.", "Robert", "H.", "Cotton,", "ITT", "Continental", "Baking", "Company;", "Dr.", "Owen", "Fennema,", "University", "of", "Wis-", "consin;", "Dr.", "Robert", "E.", "Hardenburg,", "USDA.", "Questions", "and", "Answers", "Exhibits", "Open", "Capt.", "Jack", "Stoney", "Room", "TRRF", "Scientific", "Advisory", "Council", "Meeting", "Ballroom", "Foyer"]]  # noqa: E231
								__UpperCamelCase	:   Optional[Any]			   =					[[[1_4_1, 5_7, 2_1_4, 6_9], [2_2_8, 5_8, 2_5_2, 6_9], [1_4_1, 7_5, 2_1_6, 8_8], [2_3_0, 7_9, 2_8_0, 8_8], [1_4_2, 2_6_0, 2_1_8, 2_7_3], [2_3_0, 2_6_1, 2_5_5, 2_7_3], [1_4_3, 2_7_9, 2_1_8, 2_9_0], [2_3_1, 2_8_2, 2_9_0, 2_9_1], [1_4_3, 3_4_2, 2_1_8, 3_5_4], [2_3_1, 3_4_5, 2_8_9, 3_5_5], [2_0_2, 3_6_2, 2_2_7, 3_7_3], [1_4_3, 3_7_9, 2_2_0, 3_9_2], [2_3_1, 3_8_2, 2_9_1, 3_9_4], [1_4_4, 7_1_4, 2_2_0, 7_2_6], [2_3_1, 7_1_5, 2_5_6, 7_2_6], [1_4_4, 7_3_2, 2_2_0, 7_4_5], [2_3_2, 7_3_6, 2_9_1, 7_4_7], [1_4_4, 7_6_9, 2_1_8, 7_8_2], [2_3_1, 7_7_0, 2_5_6, 7_8_2], [1_4_1, 7_8_8, 2_0_2, 8_0_1], [2_1_5, 7_9_1, 2_7_4, 8_0_4], [1_4_3, 8_2_6, 2_0_4, 8_3_8], [2_1_5, 8_2_6, 2_4_0, 8_3_8], [1_4_2, 8_4_4, 2_0_2, 8_5_7], [2_1_5, 8_4_7, 2_7_4, 8_5_9], [3_3_4, 5_7, 4_2_7, 6_9], [4_4_0, 5_7, 5_2_2, 6_9], [3_6_9, 7_5, 4_6_1, 8_8], [4_6_9, 7_5, 5_1_6, 8_8], [5_2_8, 7_6, 5_6_2, 8_8], [5_7_0, 7_6, 6_6_7, 8_8], [6_7_5, 7_5, 7_1_1, 8_7], [7_2_1, 7_9, 7_7_8, 8_8], [7_8_9, 7_5, 8_4_0, 8_8], [3_6_9, 9_7, 4_7_0, 1_0_7], [4_8_4, 9_4, 5_0_7, 1_0_6], [5_1_8, 9_4, 5_6_2, 1_0_7], [5_7_6, 9_4, 6_5_5, 1_1_0], [6_6_8, 9_4, 7_9_2, 1_0_9], [8_0_4, 9_5, 8_2_9, 1_0_7], [3_6_9, 1_1_3, 4_6_5, 1_2_5], [4_7_7, 1_1_6, 5_4_7, 1_2_5], [5_6_2, 1_1_3, 6_5_8, 1_2_5], [6_7_1, 1_1_6, 7_4_8, 1_2_5], [7_6_1, 1_1_3, 8_1_1, 1_2_5], [3_6_9, 1_3_1, 4_6_5, 1_4_3], [4_7_7, 1_3_3, 5_4_8, 1_4_3], [5_6_3, 1_3_0, 6_9_8, 1_4_5], [7_1_0, 1_3_0, 8_0_2, 1_4_6], [3_3_6, 1_7_1, 4_1_2, 1_8_3], [4_2_3, 1_7_1, 5_7_2, 1_8_3], [5_8_2, 1_7_0, 7_1_6, 1_8_4], [7_2_8, 1_7_1, 8_1_7, 1_8_7], [8_2_9, 1_7_1, 8_4_4, 1_8_6], [3_3_8, 1_9_7, 4_8_2, 2_1_2], [5_0_7, 1_9_6, 5_5_7, 2_0_9], [5_6_9, 1_9_6, 5_9_5, 2_0_8], [6_1_0, 1_9_6, 7_0_2, 2_0_9], [5_0_5, 2_1_4, 5_8_3, 2_2_6], [5_9_5, 2_1_4, 6_5_6, 2_2_7], [6_7_0, 2_1_5, 8_0_7, 2_2_7], [3_3_5, 2_5_9, 5_4_3, 2_7_4], [5_5_6, 2_5_9, 7_0_8, 2_7_2], [3_7_2, 2_7_9, 4_2_2, 2_9_1], [4_3_5, 2_7_9, 4_6_0, 2_9_1], [4_7_4, 2_7_9, 5_7_4, 2_9_2], [5_8_7, 2_7_8, 6_6_4, 2_9_1], [6_7_6, 2_7_8, 7_3_8, 2_9_1], [7_5_1, 2_7_9, 8_3_4, 2_9_1], [3_7_2, 2_9_8, 4_3_4, 3_1_0], [3_3_5, 3_4_1, 4_8_3, 3_5_4], [4_9_7, 3_4_1, 6_5_5, 3_5_4], [6_6_7, 3_4_1, 7_2_8, 3_5_4], [7_4_0, 3_4_1, 8_2_5, 3_5_4], [3_3_5, 3_6_0, 4_3_0, 3_7_2], [4_4_2, 3_6_0, 5_3_4, 3_7_2], [5_4_5, 3_5_9, 6_8_7, 3_7_2], [6_9_7, 3_6_0, 7_5_4, 3_7_2], [7_6_5, 3_6_0, 8_2_3, 3_7_3], [3_3_4, 3_7_8, 4_2_8, 3_9_1], [4_4_0, 3_7_8, 5_7_7, 3_9_4], [5_9_0, 3_7_8, 7_0_5, 3_9_1], [7_2_0, 3_7_8, 8_0_1, 3_9_1], [3_3_4, 3_9_7, 4_0_0, 4_0_9], [3_7_0, 4_1_6, 5_2_9, 4_2_9], [5_4_4, 4_1_6, 5_7_6, 4_3_2], [5_8_7, 4_1_6, 6_6_5, 4_2_8], [6_7_7, 4_1_6, 8_1_4, 4_2_9], [3_7_2, 4_3_5, 4_5_2, 4_5_0], [4_6_5, 4_3_4, 4_9_5, 4_4_7], [5_1_1, 4_3_4, 6_0_0, 4_4_7], [6_1_1, 4_3_6, 6_3_7, 4_4_7], [6_4_9, 4_3_6, 6_9_4, 4_5_1], [7_0_5, 4_3_8, 8_2_4, 4_4_7], [3_6_9, 4_5_3, 4_5_2, 4_6_6], [4_6_4, 4_5_4, 5_0_9, 4_6_6], [5_2_2, 4_5_3, 6_1_1, 4_6_9], [6_2_5, 4_5_3, 7_9_2, 4_6_9], [3_7_0, 4_7_2, 5_5_6, 4_8_8], [5_7_0, 4_7_2, 6_8_4, 4_8_7], [6_9_7, 4_7_2, 7_1_8, 4_8_5], [7_3_2, 4_7_2, 8_3_5, 4_8_8], [3_6_9, 4_9_0, 4_1_1, 5_0_3], [4_2_5, 4_9_0, 4_8_4, 5_0_3], [4_9_6, 4_9_0, 6_3_5, 5_0_6], [6_4_5, 4_9_0, 7_0_7, 5_0_3], [7_1_8, 4_9_1, 7_6_1, 5_0_3], [7_7_1, 4_9_0, 8_4_0, 5_0_3], [3_3_6, 5_1_0, 3_7_4, 5_2_1], [3_8_8, 5_1_0, 4_4_7, 5_2_2], [4_6_0, 5_1_0, 4_8_9, 5_2_1], [5_0_3, 5_1_0, 5_8_0, 5_2_2], [5_9_2, 5_0_9, 7_3_6, 5_2_5], [7_4_5, 5_0_9, 7_7_0, 5_2_2], [7_8_1, 5_0_9, 8_4_0, 5_2_2], [3_3_8, 5_2_8, 4_3_4, 5_4_1], [4_4_8, 5_2_8, 5_9_6, 5_4_1], [6_0_9, 5_2_7, 6_8_7, 5_4_0], [7_0_0, 5_2_8, 7_9_2, 5_4_1], [3_3_6, 5_4_6, 3_9_7, 5_5_9], [4_0_7, 5_4_6, 4_3_1, 5_5_9], [4_4_3, 5_4_6, 5_2_5, 5_6_0], [5_3_7, 5_4_6, 6_8_0, 5_6_2], [6_8_8, 5_4_6, 7_1_4, 5_5_9], [7_2_2, 5_4_6, 8_3_7, 5_6_2], [3_3_6, 5_6_5, 4_4_9, 5_8_1], [4_6_1, 5_6_5, 4_8_5, 5_7_7], [4_9_7, 5_6_5, 6_6_5, 5_8_1], [6_8_1, 5_6_5, 7_1_8, 5_7_7], [7_3_2, 5_6_5, 8_3_7, 5_8_0], [3_3_7, 5_8_4, 4_3_8, 5_9_7], [4_5_2, 5_8_3, 5_2_1, 5_9_6], [5_3_5, 5_8_4, 6_7_7, 5_9_9], [6_9_0, 5_8_3, 7_8_7, 5_9_6], [8_0_1, 5_8_3, 8_2_5, 5_9_6], [3_3_8, 6_0_2, 4_7_8, 6_1_5], [4_9_2, 6_0_2, 5_3_0, 6_1_4], [5_4_3, 6_0_2, 6_3_8, 6_1_5], [6_5_0, 6_0_2, 6_7_6, 6_1_4], [6_8_8, 6_0_2, 7_8_8, 6_1_5], [8_0_2, 6_0_2, 8_4_3, 6_1_4], [3_3_7, 6_2_1, 5_0_2, 6_3_3], [5_1_6, 6_2_1, 6_1_5, 6_3_7], [6_2_9, 6_2_1, 7_7_4, 6_3_6], [7_8_9, 6_2_1, 8_2_7, 6_3_3], [3_3_7, 6_3_9, 4_1_8, 6_5_2], [4_3_2, 6_4_0, 5_7_1, 6_5_3], [5_8_7, 6_3_9, 7_3_1, 6_5_5], [7_4_3, 6_3_9, 7_6_9, 6_5_2], [7_8_0, 6_3_9, 8_4_1, 6_5_2], [3_3_8, 6_5_8, 4_4_0, 6_7_3], [4_5_5, 6_5_8, 4_9_1, 6_7_0], [5_0_8, 6_5_8, 6_0_2, 6_7_1], [6_1_6, 6_5_8, 6_3_8, 6_7_0], [6_5_4, 6_5_8, 8_3_5, 6_7_4], [3_3_7, 6_7_7, 4_2_9, 6_8_9], [3_3_7, 7_1_4, 4_8_2, 7_2_6], [4_9_5, 7_1_4, 5_4_8, 7_2_6], [5_6_1, 7_1_4, 6_8_3, 7_2_6], [3_3_8, 7_7_0, 4_6_1, 7_8_2], [4_7_4, 7_6_9, 5_5_4, 7_8_5], [4_8_9, 7_8_8, 5_6_2, 8_0_3], [5_7_6, 7_8_8, 6_4_3, 8_0_1], [6_5_6, 7_8_7, 7_5_1, 8_0_4], [7_6_4, 7_8_8, 8_4_4, 8_0_1], [3_3_4, 8_2_5, 4_2_1, 8_3_8], [4_3_0, 8_2_4, 5_7_4, 8_3_8], [5_8_4, 8_2_4, 7_2_3, 8_4_1], [3_3_5, 8_4_4, 4_5_0, 8_5_7], [4_6_4, 8_4_3, 5_8_3, 8_6_0], [6_2_8, 8_6_2, 7_5_5, 8_7_5], [7_6_9, 8_6_1, 8_4_8, 8_7_8]]]  # noqa: E231
								# fmt: on

								self.assertListEqual(encoding.words     ,   a						)
								self.assertListEqual(encoding.boxes     ,   a						)

								# with apply_OCR = False
								__UpperCamelCase	:   int			   =					LayoutLMvaImageProcessor(apply_ocr=a						)

								__UpperCamelCase	:   int			   =					image_processing(a     ,   return_tensors="pt"						)

								self.assertEqual(encoding.pixel_values.shape     ,   (1, 3, 2_2_4, 2_2_4)						)

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  lowerCamelCase__							(				__lowercase     ,						unittest.TestCase):




	'''simple docstring'''




	_A								=     KandinskyVaaPriorPipeline
	_A								=     ['prompt']
	_A								=     ['prompt', 'negative_prompt']
	_A								=     [
	    'num_images_per_prompt',
	    'generator',
	    'num_inference_steps',
	    'latents',
	    'negative_prompt',
	    'guidance_scale',
	    'output_type',
	    'return_dict',
	]
	_A								=     False







	@property
	def    _lowerCamelCase				(					self		:Tuple						)		-> Optional[Any]:
								return 3_2







	@property
	def    _lowerCamelCase				(					self		:List[str]						)		-> List[str]:
								return 3_2







	@property
	def    _lowerCamelCase				(					self		:Union[str, Any]						)		-> Tuple:
								return self.time_input_dim







	@property
	def    _lowerCamelCase				(					self		:Union[str, Any]						)		-> Any:
								return self.time_input_dim * 4







	@property
	def    _lowerCamelCase				(					self		:Tuple						)		-> str:
								return 1_0_0







	@property
	def    _lowerCamelCase				(					self		:Union[str, Any]						)		-> Any:
								__UpperCamelCase	:   int			   =					CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"						)
								return tokenizer







	@property
	def    _lowerCamelCase				(					self		:str						)		-> int:
								torch.manual_seed(0						)
								__UpperCamelCase	:   Optional[int]			   =					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=3_7     ,   layer_norm_eps=1E-0_5     ,   num_attention_heads=4     ,   num_hidden_layers=5     ,   pad_token_id=1     ,   vocab_size=1_0_0_0     ,   )
								return CLIPTextModelWithProjection(a						)







	@property
	def    _lowerCamelCase				(					self		:int						)		-> Optional[Any]:
								torch.manual_seed(0						)

								__UpperCamelCase	:   Optional[int]			   =					{
								    "num_attention_heads": 2,
								    "attention_head_dim": 1_2,
								    "embedding_dim": self.text_embedder_hidden_size,
								    "num_layers": 1,
								}

								__UpperCamelCase	:   List[Any]			   =					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
								__UpperCamelCase	:   Optional[int]			   =					nn.Parameter(torch.ones(model.clip_std.shape						)						)
								return model







	@property
	def    _lowerCamelCase				(					self		:Dict						)		-> Union[str, Any]:
								torch.manual_seed(0						)
								__UpperCamelCase	:   Union[str, Any]			   =					CLIPVisionConfig(
								    hidden_size=self.text_embedder_hidden_size     ,   image_size=2_2_4     ,   projection_dim=self.text_embedder_hidden_size     ,   intermediate_size=3_7     ,   num_attention_heads=4     ,   num_channels=3     ,   num_hidden_layers=5     ,   patch_size=1_4     ,   )

								__UpperCamelCase	:   int			   =					CLIPVisionModelWithProjection(a						)
								return model







	@property
	def    _lowerCamelCase				(					self		:Dict						)		-> Optional[Any]:
								__UpperCamelCase	:   List[str]			   =					CLIPImageProcessor(
								    crop_size=2_2_4     ,   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=2_2_4     ,   )

								return image_processor







	def    _lowerCamelCase				(					self		:str						)		-> Optional[int]:
								__UpperCamelCase	:   str			   =					self.dummy_prior
								__UpperCamelCase	:   int			   =					self.dummy_image_encoder
								__UpperCamelCase	:   Tuple			   =					self.dummy_text_encoder
								__UpperCamelCase	:   int			   =					self.dummy_tokenizer
								__UpperCamelCase	:   Optional[Any]			   =					self.dummy_image_processor

								__UpperCamelCase	:   int			   =					UnCLIPScheduler(
								    variance_type="fixed_small_log"     ,   prediction_type="sample"     ,   num_train_timesteps=1_0_0_0     ,   clip_sample=a     ,   clip_sample_range=10.0     ,   )

								__UpperCamelCase	:   List[Any]			   =					{
								    "prior": prior,
								    "image_encoder": image_encoder,
								    "text_encoder": text_encoder,
								    "tokenizer": tokenizer,
								    "scheduler": scheduler,
								    "image_processor": image_processor,
								}

								return components







	def    _lowerCamelCase				(					self		:Optional[Any]     ,   a		:int     ,   a		:Union[str, Any]=0						)		-> Any:
								if str(a						).startswith("mps"						):
															__UpperCamelCase	:   int			   =					torch.manual_seed(a						)
								else:
															__UpperCamelCase	:   List[Any]			   =					torch.Generator(device=a						).manual_seed(a						)
								__UpperCamelCase	:   int			   =					{
								    "prompt": "horse",
								    "generator": generator,
								    "guidance_scale": 4.0,
								    "num_inference_steps": 2,
								    "output_type": "np",
								}
								return inputs







	def    _lowerCamelCase				(					self		:List[Any]						)		-> Dict:
								__UpperCamelCase	:   int			   =					"cpu"

								__UpperCamelCase	:   List[str]			   =					self.get_dummy_components()

								__UpperCamelCase	:   List[str]			   =					self.pipeline_class(**a						)
								__UpperCamelCase	:   Tuple			   =					pipe.to(a						)

								pipe.set_progress_bar_config(disable=a						)

								__UpperCamelCase	:   int			   =					pipe(**self.get_dummy_inputs(a						)						)
								__UpperCamelCase	:   int			   =					output.image_embeds

								__UpperCamelCase	:   Optional[int]			   =					pipe(
								    **self.get_dummy_inputs(a						)     ,   return_dict=a     ,   )[0]

								__UpperCamelCase	:   Union[str, Any]			   =					image[0, -1_0:]
								__UpperCamelCase	:   List[str]			   =					image_from_tuple[0, -1_0:]

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

								__UpperCamelCase	:   List[Any]			   =					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    _lowerCamelCase				(					self		:int						)		-> Union[str, Any]:
								__UpperCamelCase	:   str			   =					torch_device == "cpu"
								__UpperCamelCase	:   List[str]			   =					True
								__UpperCamelCase	:   List[Any]			   =					False

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







	@skip_mps
	def    _lowerCamelCase				(					self		:Any						)		-> int:
								__UpperCamelCase	:   Optional[Any]			   =					torch_device == "cpu"
								__UpperCamelCase	:   Dict			   =					False

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