



'''simple docstring'''

import shutil
import tempfile
import unittest

import numpy as np

from transformers.testing_utils import (
    is_pt_tf_cross_test,
    require_tf,
    require_torch,
    require_torchvision,
    require_vision,
)
from transformers.utils import is_tf_available, is_torch_available, is_vision_available


if is_vision_available():
							from PIL import Image

							from transformers import AutoProcessor, SamImageProcessor, SamProcessor

if is_torch_available():
							import torch

if is_tf_available():
							import tensorflow as tf

@require_vision
@require_torchvision
class      __magic_name__						(   unittest.TestCase       ):







							def 							__lowercase      (							self :	Tuple		):
									_a					:				str				=							tempfile.mkdtemp()
									_a					:				Dict				=							SamImageProcessor()
									_a					:				Tuple				=							SamProcessor(_UpperCAmelCase		)
									processor.save_pretrained(self.tmpdirname		)







							def 							__lowercase      (							self :	Optional[Any]     ,**_UpperCAmelCase :	Tuple		):
									return AutoProcessor.from_pretrained(self.tmpdirname     ,**_UpperCAmelCase		).image_processor







							def 							__lowercase      (							self :	Dict		):
									shutil.rmtree(self.tmpdirname		)







							def 							__lowercase      (							self :	str		):
									_a					:				Optional[int]				=							[np.random.randint(255     ,size=(3, 30, 400)     ,dtype=np.uinta		)]

									_a					:				Optional[int]				=							[Image.fromarray(np.moveaxis(_UpperCAmelCase     ,0     ,-1		)		) for x in image_inputs]

									return image_inputs







							def 							__lowercase      (							self :	int		):
									_a					:				int				=							SamProcessor(image_processor=self.get_image_processor()		)
									processor.save_pretrained(self.tmpdirname		)

									_a					:				Optional[Any]				=							self.get_image_processor(do_normalize=_UpperCAmelCase     ,padding_value=1.0		)

									_a					:				List[Any]				=							SamProcessor.from_pretrained(self.tmpdirname     ,do_normalize=_UpperCAmelCase     ,padding_value=1.0		)

									self.assertEqual(processor.image_processor.to_json_string()     ,image_processor_add_kwargs.to_json_string()		)
									self.assertIsInstance(processor.image_processor     ,_UpperCAmelCase		)







							def 							__lowercase      (							self :	Union[str, Any]		):
									_a					:				Optional[int]				=							self.get_image_processor()

									_a					:				Any				=							SamProcessor(image_processor=_UpperCAmelCase		)

									_a					:				Optional[int]				=							self.prepare_image_inputs()

									_a					:				List[Any]				=							image_processor(_UpperCAmelCase     ,return_tensors='np'		)
									_a					:				List[Any]				=							processor(images=_UpperCAmelCase     ,return_tensors='np'		)

									input_feat_extract.pop('original_sizes'		)  # pop original_sizes as it is popped in the processor
									input_feat_extract.pop('reshaped_input_sizes'		)  # pop original_sizes as it is popped in the processor

									for key in input_feat_extract.keys():
											self.assertAlmostEqual(input_feat_extract[key].sum()     ,input_processor[key].sum()     ,delta=1E-2		)







							@require_torch
							def 							__lowercase      (							self :	Union[str, Any]		):
									_a					:				List[str]				=							self.get_image_processor()

									_a					:				Optional[Any]				=							SamProcessor(image_processor=_UpperCAmelCase		)
									_a					:				Dict				=							[torch.ones((1, 3, 5, 5)		)]

									_a					:				List[Any]				=							[[1764, 2646]]

									_a					:				Union[str, Any]				=							[[683, 1024]]
									_a					:				Optional[Any]				=							processor.post_process_masks(_UpperCAmelCase     ,_UpperCAmelCase     ,_UpperCAmelCase		)
									self.assertEqual(masks[0].shape     ,(1, 3, 1764, 2646)		)

									_a					:				Optional[int]				=							processor.post_process_masks(
									    _UpperCAmelCase     ,torch.tensor(_UpperCAmelCase		)     ,torch.tensor(_UpperCAmelCase		)		)
									self.assertEqual(masks[0].shape     ,(1, 3, 1764, 2646)		)

									# should also work with np
									_a					:				Optional[int]				=							[np.ones((1, 3, 5, 5)		)]
									_a					:				Optional[Any]				=							processor.post_process_masks(_UpperCAmelCase     ,np.array(_UpperCAmelCase		)     ,np.array(_UpperCAmelCase		)		)

									self.assertEqual(masks[0].shape     ,(1, 3, 1764, 2646)		)

									_a					:				Optional[int]				=							[[1, 0], [0, 1]]
									with self.assertRaises(_UpperCAmelCase		):
											_a					:				Optional[Any]				=							processor.post_process_masks(_UpperCAmelCase     ,np.array(_UpperCAmelCase		)     ,np.array(_UpperCAmelCase		)		)

@require_vision
@require_tf
class      __magic_name__						(   unittest.TestCase       ):







							def 							__lowercase      (							self :	str		):
									_a					:				str				=							tempfile.mkdtemp()
									_a					:				Union[str, Any]				=							SamImageProcessor()
									_a					:				str				=							SamProcessor(_UpperCAmelCase		)
									processor.save_pretrained(self.tmpdirname		)







							def 							__lowercase      (							self :	Tuple     ,**_UpperCAmelCase :	Tuple		):
									return AutoProcessor.from_pretrained(self.tmpdirname     ,**_UpperCAmelCase		).image_processor







							def 							__lowercase      (							self :	Tuple		):
									shutil.rmtree(self.tmpdirname		)







							def 							__lowercase      (							self :	Tuple		):
									_a					:				str				=							[np.random.randint(255     ,size=(3, 30, 400)     ,dtype=np.uinta		)]

									_a					:				Optional[Any]				=							[Image.fromarray(np.moveaxis(_UpperCAmelCase     ,0     ,-1		)		) for x in image_inputs]

									return image_inputs







							def 							__lowercase      (							self :	Optional[Any]		):
									_a					:				Any				=							SamProcessor(image_processor=self.get_image_processor()		)
									processor.save_pretrained(self.tmpdirname		)

									_a					:				List[str]				=							self.get_image_processor(do_normalize=_UpperCAmelCase     ,padding_value=1.0		)

									_a					:				int				=							SamProcessor.from_pretrained(self.tmpdirname     ,do_normalize=_UpperCAmelCase     ,padding_value=1.0		)

									self.assertEqual(processor.image_processor.to_json_string()     ,image_processor_add_kwargs.to_json_string()		)
									self.assertIsInstance(processor.image_processor     ,_UpperCAmelCase		)







							def 							__lowercase      (							self :	Optional[Any]		):
									_a					:				Union[str, Any]				=							self.get_image_processor()

									_a					:				Optional[int]				=							SamProcessor(image_processor=_UpperCAmelCase		)

									_a					:				Optional[Any]				=							self.prepare_image_inputs()

									_a					:				Union[str, Any]				=							image_processor(_UpperCAmelCase     ,return_tensors='np'		)
									_a					:				Union[str, Any]				=							processor(images=_UpperCAmelCase     ,return_tensors='np'		)

									input_feat_extract.pop('original_sizes'		)  # pop original_sizes as it is popped in the processor
									input_feat_extract.pop('reshaped_input_sizes'		)  # pop reshaped_input_sizes as it is popped in the processor

									for key in input_feat_extract.keys():
											self.assertAlmostEqual(input_feat_extract[key].sum()     ,input_processor[key].sum()     ,delta=1E-2		)







							@require_tf
							def 							__lowercase      (							self :	List[str]		):
									_a					:				Tuple				=							self.get_image_processor()

									_a					:				Tuple				=							SamProcessor(image_processor=_UpperCAmelCase		)
									_a					:				Union[str, Any]				=							[tf.ones((1, 3, 5, 5)		)]

									_a					:				List[str]				=							[[1764, 2646]]

									_a					:				Any				=							[[683, 1024]]
									_a					:				int				=							processor.post_process_masks(_UpperCAmelCase     ,_UpperCAmelCase     ,_UpperCAmelCase     ,return_tensors='tf'		)
									self.assertEqual(masks[0].shape     ,(1, 3, 1764, 2646)		)

									_a					:				Optional[int]				=							processor.post_process_masks(
									    _UpperCAmelCase     ,tf.convert_to_tensor(_UpperCAmelCase		)     ,tf.convert_to_tensor(_UpperCAmelCase		)     ,return_tensors='tf'     ,)
									self.assertEqual(masks[0].shape     ,(1, 3, 1764, 2646)		)

									# should also work with np
									_a					:				Optional[int]				=							[np.ones((1, 3, 5, 5)		)]
									_a					:				int				=							processor.post_process_masks(
									    _UpperCAmelCase     ,np.array(_UpperCAmelCase		)     ,np.array(_UpperCAmelCase		)     ,return_tensors='tf'		)

									self.assertEqual(masks[0].shape     ,(1, 3, 1764, 2646)		)

									_a					:				List[str]				=							[[1, 0], [0, 1]]
									with self.assertRaises(tf.errors.InvalidArgumentError		):
											_a					:				Any				=							processor.post_process_masks(
											    _UpperCAmelCase     ,np.array(_UpperCAmelCase		)     ,np.array(_UpperCAmelCase		)     ,return_tensors='tf'		)

@require_vision
@require_torchvision
class      __magic_name__						(   unittest.TestCase       ):







							def 							__lowercase      (							self :	Optional[int]		):
									_a					:				Union[str, Any]				=							tempfile.mkdtemp()
									_a					:				str				=							SamImageProcessor()
									_a					:				str				=							SamProcessor(_UpperCAmelCase		)
									processor.save_pretrained(self.tmpdirname		)







							def 							__lowercase      (							self :	Optional[int]     ,**_UpperCAmelCase :	str		):
									return AutoProcessor.from_pretrained(self.tmpdirname     ,**_UpperCAmelCase		).image_processor







							def 							__lowercase      (							self :	Dict		):
									shutil.rmtree(self.tmpdirname		)







							def 							__lowercase      (							self :	Dict		):
									_a					:				Any				=							[np.random.randint(255     ,size=(3, 30, 400)     ,dtype=np.uinta		)]

									_a					:				List[str]				=							[Image.fromarray(np.moveaxis(_UpperCAmelCase     ,0     ,-1		)		) for x in image_inputs]

									return image_inputs







							@is_pt_tf_cross_test
							def 							__lowercase      (							self :	Dict		):
									_a					:				str				=							self.get_image_processor()

									_a					:				Union[str, Any]				=							SamProcessor(image_processor=_UpperCAmelCase		)
									_a					:				Union[str, Any]				=							np.random.randint(0     ,2     ,size=(1, 3, 5, 5)		).astype(np.floataa		)
									_a					:				Any				=							[tf.convert_to_tensor(_UpperCAmelCase		)]
									_a					:				Optional[int]				=							[torch.tensor(_UpperCAmelCase		)]

									_a					:				int				=							[[1764, 2646]]

									_a					:				Any				=							[[683, 1024]]
									_a					:				Tuple				=							processor.post_process_masks(
									    _UpperCAmelCase     ,_UpperCAmelCase     ,_UpperCAmelCase     ,return_tensors='tf'		)
									_a					:				Optional[Any]				=							processor.post_process_masks(
									    _UpperCAmelCase     ,_UpperCAmelCase     ,_UpperCAmelCase     ,return_tensors='pt'		)

									self.assertTrue(np.all(tf_masks[0].numpy() == pt_masks[0].numpy()		)		)







							@is_pt_tf_cross_test
							def 							__lowercase      (							self :	Optional[Any]		):
									_a					:				Optional[int]				=							self.get_image_processor()

									_a					:				List[Any]				=							SamProcessor(image_processor=_UpperCAmelCase		)

									_a					:				Any				=							self.prepare_image_inputs()

									_a					:				Optional[Any]				=							image_processor(_UpperCAmelCase     ,return_tensors='pt'		)['pixel_values'].numpy()
									_a					:				int				=							processor(images=_UpperCAmelCase     ,return_tensors='pt'		)['pixel_values'].numpy()

									_a					:				str				=							image_processor(_UpperCAmelCase     ,return_tensors='tf'		)['pixel_values'].numpy()
									_a					:				List[str]				=							processor(images=_UpperCAmelCase     ,return_tensors='tf'		)['pixel_values'].numpy()

									self.assertTrue(np.allclose(_UpperCAmelCase     ,_UpperCAmelCase		)		)
									self.assertTrue(np.allclose(_UpperCAmelCase     ,_UpperCAmelCase		)		)
									self.assertTrue(np.allclose(_UpperCAmelCase     ,_UpperCAmelCase		)		)









'''simple docstring'''

def 					__lowerCamelCase					(				lowerCAmelCase_  )      ->				list:
		if any(not isinstance(lowerCAmelCase_						,      lowerCAmelCase_  ) or x < 0 for x in sequence  ):
				raise TypeError('Sequence must be list of non-negative integers'  )
		for _ in range(len(lowerCAmelCase_  )  ):
				for i, (rod_upper, rod_lower) in enumerate(zip(lowerCAmelCase_						,      sequence[1:]  )  ):
						if rod_upper > rod_lower:
								sequence[i] -= rod_upper - rod_lower
								sequence[i + 1] += rod_upper - rod_lower
		return sequence


if __name__ == "__main__":
							assert bead_sort([5, 4, 3, 2, 1]) == [1, 2, 3, 4, 5]
							assert bead_sort([7, 9, 4, 3, 5]) == [3, 4, 5, 7, 9]




