


"""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 			lowerCamelCase_		(			unittest.TestCase   ):





				"""simple docstring"""







				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				tempfile.mkdtemp()
								SCREAMING_SNAKE_CASE__     							=				SamImageProcessor()
								SCREAMING_SNAKE_CASE__     							=				SamProcessor(UpperCAmelCase__     )
								processor.save_pretrained(self.tmpdirname     )



				def   lowerCAmelCase__		(						self       ,		**UpperCAmelCase__     ):
								return AutoProcessor.from_pretrained(self.tmpdirname       ,		**UpperCAmelCase__     ).image_processor



				def   lowerCAmelCase__		(						self     ):
								shutil.rmtree(self.tmpdirname     )



				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				[np.random.randint(255       ,		size=(3, 30, 400)       ,		dtype=np.uinta     )]

								SCREAMING_SNAKE_CASE__     							=				[Image.fromarray(np.moveaxis(UpperCAmelCase__       ,		0       ,		-1     )     ) for x in image_inputs]

								return image_inputs



				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=self.get_image_processor()     )
								processor.save_pretrained(self.tmpdirname     )

								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor(do_normalize=UpperCAmelCase__       ,		padding_value=1.0     )

								SCREAMING_SNAKE_CASE__     							=				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   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor()

								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=UpperCAmelCase__     )

								SCREAMING_SNAKE_CASE__     							=				self.prepare_image_inputs()

								SCREAMING_SNAKE_CASE__     							=				image_processor(UpperCAmelCase__       ,		return_tensors="np"     )
								SCREAMING_SNAKE_CASE__     							=				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   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor()

								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=UpperCAmelCase__     )
								SCREAMING_SNAKE_CASE__     							=				[torch.ones((1, 3, 5, 5)     )]

								SCREAMING_SNAKE_CASE__     							=				[[1764, 2646]]

								SCREAMING_SNAKE_CASE__     							=				[[683, 1024]]
								SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(UpperCAmelCase__       ,		UpperCAmelCase__       ,		UpperCAmelCase__     )
								self.assertEqual(masks[0].shape       ,		(1, 3, 1764, 2646)     )

								SCREAMING_SNAKE_CASE__     							=				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
								SCREAMING_SNAKE_CASE__     							=				[np.ones((1, 3, 5, 5)     )]
								SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(UpperCAmelCase__       ,		np.array(UpperCAmelCase__     )       ,		np.array(UpperCAmelCase__     )     )

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

								SCREAMING_SNAKE_CASE__     							=				[[1, 0], [0, 1]]
								with self.assertRaises(UpperCAmelCase__     ):
												SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(UpperCAmelCase__       ,		np.array(UpperCAmelCase__     )       ,		np.array(UpperCAmelCase__     )     )


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





				"""simple docstring"""







				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				tempfile.mkdtemp()
								SCREAMING_SNAKE_CASE__     							=				SamImageProcessor()
								SCREAMING_SNAKE_CASE__     							=				SamProcessor(UpperCAmelCase__     )
								processor.save_pretrained(self.tmpdirname     )



				def   lowerCAmelCase__		(						self       ,		**UpperCAmelCase__     ):
								return AutoProcessor.from_pretrained(self.tmpdirname       ,		**UpperCAmelCase__     ).image_processor



				def   lowerCAmelCase__		(						self     ):
								shutil.rmtree(self.tmpdirname     )



				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				[np.random.randint(255       ,		size=(3, 30, 400)       ,		dtype=np.uinta     )]

								SCREAMING_SNAKE_CASE__     							=				[Image.fromarray(np.moveaxis(UpperCAmelCase__       ,		0       ,		-1     )     ) for x in image_inputs]

								return image_inputs



				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=self.get_image_processor()     )
								processor.save_pretrained(self.tmpdirname     )

								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor(do_normalize=UpperCAmelCase__       ,		padding_value=1.0     )

								SCREAMING_SNAKE_CASE__     							=				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   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor()

								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=UpperCAmelCase__     )

								SCREAMING_SNAKE_CASE__     							=				self.prepare_image_inputs()

								SCREAMING_SNAKE_CASE__     							=				image_processor(UpperCAmelCase__       ,		return_tensors="np"     )
								SCREAMING_SNAKE_CASE__     							=				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   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor()

								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=UpperCAmelCase__     )
								SCREAMING_SNAKE_CASE__     							=				[tf.ones((1, 3, 5, 5)     )]

								SCREAMING_SNAKE_CASE__     							=				[[1764, 2646]]

								SCREAMING_SNAKE_CASE__     							=				[[683, 1024]]
								SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(UpperCAmelCase__       ,		UpperCAmelCase__       ,		UpperCAmelCase__       ,		return_tensors="tf"     )
								self.assertEqual(masks[0].shape       ,		(1, 3, 1764, 2646)     )

								SCREAMING_SNAKE_CASE__     							=				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
								SCREAMING_SNAKE_CASE__     							=				[np.ones((1, 3, 5, 5)     )]
								SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(
								    UpperCAmelCase__       ,		np.array(UpperCAmelCase__     )       ,		np.array(UpperCAmelCase__     )       ,		return_tensors="tf"     )

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

								SCREAMING_SNAKE_CASE__     							=				[[1, 0], [0, 1]]
								with self.assertRaises(tf.errors.InvalidArgumentError     ):
												SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(
												    UpperCAmelCase__       ,		np.array(UpperCAmelCase__     )       ,		np.array(UpperCAmelCase__     )       ,		return_tensors="tf"     )


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





				"""simple docstring"""







				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				tempfile.mkdtemp()
								SCREAMING_SNAKE_CASE__     							=				SamImageProcessor()
								SCREAMING_SNAKE_CASE__     							=				SamProcessor(UpperCAmelCase__     )
								processor.save_pretrained(self.tmpdirname     )



				def   lowerCAmelCase__		(						self       ,		**UpperCAmelCase__     ):
								return AutoProcessor.from_pretrained(self.tmpdirname       ,		**UpperCAmelCase__     ).image_processor



				def   lowerCAmelCase__		(						self     ):
								shutil.rmtree(self.tmpdirname     )



				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				[np.random.randint(255       ,		size=(3, 30, 400)       ,		dtype=np.uinta     )]

								SCREAMING_SNAKE_CASE__     							=				[Image.fromarray(np.moveaxis(UpperCAmelCase__       ,		0       ,		-1     )     ) for x in image_inputs]

								return image_inputs



				@is_pt_tf_cross_test
				def   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor()

								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=UpperCAmelCase__     )
								SCREAMING_SNAKE_CASE__     							=				np.random.randint(0       ,		2       ,		size=(1, 3, 5, 5)     ).astype(np.floataa     )
								SCREAMING_SNAKE_CASE__     							=				[tf.convert_to_tensor(UpperCAmelCase__     )]
								SCREAMING_SNAKE_CASE__     							=				[torch.tensor(UpperCAmelCase__     )]

								SCREAMING_SNAKE_CASE__     							=				[[1764, 2646]]

								SCREAMING_SNAKE_CASE__     							=				[[683, 1024]]
								SCREAMING_SNAKE_CASE__     							=				processor.post_process_masks(
								    UpperCAmelCase__       ,		UpperCAmelCase__       ,		UpperCAmelCase__       ,		return_tensors="tf"     )
								SCREAMING_SNAKE_CASE__     							=				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   lowerCAmelCase__		(						self     ):
								SCREAMING_SNAKE_CASE__     							=				self.get_image_processor()

								SCREAMING_SNAKE_CASE__     							=				SamProcessor(image_processor=UpperCAmelCase__     )

								SCREAMING_SNAKE_CASE__     							=				self.prepare_image_inputs()

								SCREAMING_SNAKE_CASE__     							=				image_processor(UpperCAmelCase__       ,		return_tensors="pt"     )["pixel_values"].numpy()
								SCREAMING_SNAKE_CASE__     							=				processor(images=UpperCAmelCase__       ,		return_tensors="pt"     )["pixel_values"].numpy()

								SCREAMING_SNAKE_CASE__     							=				image_processor(UpperCAmelCase__       ,		return_tensors="tf"     )["pixel_values"].numpy()
								SCREAMING_SNAKE_CASE__     							=				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"""






from maths.is_square_free import is_square_free
from maths.prime_factors import prime_factors


def __lowercase     (      lowerCamelCase_  :      int  ):
				SCREAMING_SNAKE_CASE__     							=				prime_factors(lowerCamelCase_  )
				if is_square_free(lowerCamelCase_  ):
								return -1 if len(lowerCamelCase_  ) % 2 else 1
				return 0


if __name__ == "__main__":
	import doctest

	doctest.testmod()
