




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():
  from PIL import Image

  from transformers import ViTImageProcessor


class 							UpperCamelCase_       (					unittest.TestCase	):

    '''simple docstring'''






    def __init__(     self :      Tuple   ,					UpperCAmelCase__ :      List[str]   ,					UpperCAmelCase__ :      int=13   ,					UpperCAmelCase__ :      Union[str, Any]=3   ,					UpperCAmelCase__ :      str=224   ,					UpperCAmelCase__ :      str=30   ,					UpperCAmelCase__ :      Tuple=400   ,					UpperCAmelCase__ :      int=True   ,					UpperCAmelCase__ :      Dict=None   ,					UpperCAmelCase__ :      List[Any]=True   ,					UpperCAmelCase__ :      Union[str, Any]=[0.5, 0.5, 0.5]   ,					UpperCAmelCase__ :      Tuple=[0.5, 0.5, 0.5]   ,					)		->str:





           '''simple docstring'''

           A__ 					=       size if 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_normalize
           A__ 					=       image_mean
           A__ 					=       image_std





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





           '''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,
           }


@require_torch
@require_vision
class 							UpperCamelCase_       (					UpperCAmelCase__						,   unittest.TestCase	):

    '''simple docstring'''






    UpperCAmelCase__				    = ViTImageProcessor if is_vision_available() else None


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





           '''simple docstring'''

           A__ 					=       EfficientFormerImageProcessorTester(self)


    @property
    def 			SCREAMING_SNAKE_CASE				(     self :      Dict)		->int:





           '''simple docstring'''

           return self.image_proc_tester.prepare_image_processor_dict()


    def 			SCREAMING_SNAKE_CASE				(     self :      Optional[Any])		->Dict:





           '''simple docstring'''

           A__ 					=       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__   ,					'''size'''))


    def 			SCREAMING_SNAKE_CASE				(     self :      List[str])		->Dict:





           '''simple docstring'''

           pass


    def 			SCREAMING_SNAKE_CASE				(     self :      str)		->Optional[Any]:





           '''simple docstring'''

           A__ 					=       self.image_processing_class(**self.image_processor_dict)
           # create random PIL images
           A__ 					=       prepare_image_inputs(self.image_proc_tester   ,					equal_resolution=UpperCAmelCase__)
           for image in image_inputs:
                  self.assertIsInstance(UpperCAmelCase__   ,					Image.Image)

           # Test not batched input
           A__ 					=       image_processor(image_inputs[0]   ,					return_tensors='''pt''').pixel_values
           self.assertEqual(
               encoded_images.shape   ,					(
                   1,
                   self.image_proc_tester.num_channels,
                   self.image_proc_tester.size['''height'''],
                   self.image_proc_tester.size['''width'''],
               )   ,					)

           # Test batched
           A__ 					=       image_processor(UpperCAmelCase__   ,					return_tensors='''pt''').pixel_values
           self.assertEqual(
               encoded_images.shape   ,					(
                   self.image_proc_tester.batch_size,
                   self.image_proc_tester.num_channels,
                   self.image_proc_tester.size['''height'''],
                   self.image_proc_tester.size['''width'''],
               )   ,					)


    def 			SCREAMING_SNAKE_CASE				(     self :      Tuple)		->List[Any]:





           '''simple docstring'''

           A__ 					=       self.image_processing_class(**self.image_processor_dict)
           # create random numpy tensors
           A__ 					=       prepare_image_inputs(self.image_proc_tester   ,					equal_resolution=UpperCAmelCase__   ,					numpify=UpperCAmelCase__)
           for image in image_inputs:
                  self.assertIsInstance(UpperCAmelCase__   ,					np.ndarray)

           # Test not batched input
           A__ 					=       image_processor(image_inputs[0]   ,					return_tensors='''pt''').pixel_values
           self.assertEqual(
               encoded_images.shape   ,					(
                   1,
                   self.image_proc_tester.num_channels,
                   self.image_proc_tester.size['''height'''],
                   self.image_proc_tester.size['''width'''],
               )   ,					)

           # Test batched
           A__ 					=       image_processor(UpperCAmelCase__   ,					return_tensors='''pt''').pixel_values
           self.assertEqual(
               encoded_images.shape   ,					(
                   self.image_proc_tester.batch_size,
                   self.image_proc_tester.num_channels,
                   self.image_proc_tester.size['''height'''],
                   self.image_proc_tester.size['''width'''],
               )   ,					)





    def 			SCREAMING_SNAKE_CASE				(     self :      Tuple)		->Optional[Any]:





           '''simple docstring'''

           A__ 					=       self.image_processing_class(**self.image_processor_dict)
           # create random PyTorch tensors
           A__ 					=       prepare_image_inputs(self.image_proc_tester   ,					equal_resolution=UpperCAmelCase__   ,					torchify=UpperCAmelCase__)
           for image in image_inputs:
                  self.assertIsInstance(UpperCAmelCase__   ,					torch.Tensor)

           # Test not batched input
           A__ 					=       image_processor(image_inputs[0]   ,					return_tensors='''pt''').pixel_values
           self.assertEqual(
               encoded_images.shape   ,					(
                   1,
                   self.image_proc_tester.num_channels,
                   self.image_proc_tester.size['''height'''],
                   self.image_proc_tester.size['''width'''],
               )   ,					)

           # Test batched
           A__ 					=       image_processor(UpperCAmelCase__   ,					return_tensors='''pt''').pixel_values
           self.assertEqual(
               encoded_images.shape   ,					(
                   self.image_proc_tester.batch_size,
                   self.image_proc_tester.num_channels,
                   self.image_proc_tester.size['''height'''],
                   self.image_proc_tester.size['''width'''],
               )   ,					)








from __future__ import annotations

from fractions import Fraction




def 		lowerCAmelCase_ (						lowerCamelCase						,  lowerCamelCase ):
				return (
				    num != den and num % 10 == den // 10 and (num // 10) / (den % 10) == num / den
				)




def 		lowerCAmelCase_ (						lowerCamelCase ):
				__magic_name__						:						List[str]										=[]
				__magic_name__						:						List[Any]										=11
				__magic_name__						:						Tuple										=int("""1""" + """0""" * digit_len )
				for num in range(lowerCamelCase						,  lowerCamelCase ):
								while den <= 99:
												if (num != den) and (num % 10 == den // 10) and (den % 10 != 0):
																if is_digit_cancelling(lowerCamelCase						,  lowerCamelCase ):
																				solutions.append(F"{num}/{den}" )
												den += 1
								num += 1
								__magic_name__						:						List[str]										=10
				return solutions




def 		lowerCAmelCase_ (						lowerCamelCase = 2 ):
				__magic_name__						:						str										=1.0
				for fraction in fraction_list(lowerCamelCase ):
								__magic_name__						:						int										=Fraction(lowerCamelCase )
								result *= frac.denominator / frac.numerator
				return int(lowerCamelCase )


if __name__ == "__main__":
							print(solution())




