




import unittest

from transformers import is_vision_available
from transformers.pipelines import pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
       from PIL import Image
else:




       class 						UpperCamelCase__      :

           '''simple docstring'''



           @staticmethod
           def        _lowercase	(       *UpperCamelCase__	,    **UpperCamelCase__	)	-> List[Any]:
                  pass




@is_pipeline_test
@require_vision
class 						UpperCamelCase__      (unittest.TestCase	):

    '''simple docstring'''



    @require_torch
    def        _lowercase	(       self	)	-> str:
           lowerCamelCase  : Dict     					=   pipeline(
               model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"	,    )
           lowerCamelCase  : Any     					=   Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"	)
           lowerCamelCase  : Union[str, Any]     					=   image_classifier(SCREAMING_SNAKE_CASE__	,    candidate_labels=["a", "b", "c"]	)

           # The floating scores are so close, we enter floating error approximation and the order is not guaranteed across
           # python and torch versions.
           self.assertIn(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   [{"score": 0.333, "label": "a"}, {"score": 0.333, "label": "b"}, {"score": 0.333, "label": "c"}],
                   [{"score": 0.333, "label": "a"}, {"score": 0.333, "label": "c"}, {"score": 0.333, "label": "b"}],
               ]	,    )

           lowerCamelCase  : Tuple     					=   image_classifier([image] * 5	,    candidate_labels=["A", "B", "C"]	,    batch_size=2	)
           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
               ]	,    )







    @require_tf
    def        _lowercase	(       self	)	-> Dict:
           lowerCamelCase  : Dict     					=   pipeline(
               model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"	,    framework="tf"	)
           lowerCamelCase  : Union[str, Any]     					=   Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"	)
           lowerCamelCase  : Optional[Any]     					=   image_classifier(SCREAMING_SNAKE_CASE__	,    candidate_labels=["a", "b", "c"]	)

           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [{"score": 0.333, "label": "a"}, {"score": 0.333, "label": "b"}, {"score": 0.333, "label": "c"}]	,    )

           lowerCamelCase  : Optional[int]     					=   image_classifier([image] * 5	,    candidate_labels=["A", "B", "C"]	,    batch_size=2	)
           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
                   [
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                       {"score": 0.333, "label": ANY(SCREAMING_SNAKE_CASE__	)},
                   ],
               ]	,    )







    @slow
    @require_torch
    def        _lowercase	(       self	)	-> Dict:
           lowerCamelCase  : Any     					=   pipeline(
               task="zero-shot-image-classification"	,    model="openai/clip-vit-base-patch32"	,    )
           # This is an image of 2 cats with remotes and no planes
           lowerCamelCase  : Optional[int]     					=   Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"	)
           lowerCamelCase  : Optional[int]     					=   image_classifier(SCREAMING_SNAKE_CASE__	,    candidate_labels=["cat", "plane", "remote"]	)

           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   {"score": 0.511, "label": "remote"},
                   {"score": 0.485, "label": "cat"},
                   {"score": 0.004, "label": "plane"},
               ]	,    )

           lowerCamelCase  : str     					=   image_classifier([image] * 5	,    candidate_labels=["cat", "plane", "remote"]	,    batch_size=2	)
           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   [
                       {"score": 0.511, "label": "remote"},
                       {"score": 0.485, "label": "cat"},
                       {"score": 0.004, "label": "plane"},
                   ],
               ]
               * 5	,    )







    @slow
    @require_tf
    def        _lowercase	(       self	)	-> Optional[int]:
           lowerCamelCase  : int     					=   pipeline(
               task="zero-shot-image-classification"	,    model="openai/clip-vit-base-patch32"	,    framework="tf"	)
           # This is an image of 2 cats with remotes and no planes
           lowerCamelCase  : List[str]     					=   Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"	)
           lowerCamelCase  : str     					=   image_classifier(SCREAMING_SNAKE_CASE__	,    candidate_labels=["cat", "plane", "remote"]	)
           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   {"score": 0.511, "label": "remote"},
                   {"score": 0.485, "label": "cat"},
                   {"score": 0.004, "label": "plane"},
               ]	,    )

           lowerCamelCase  : Optional[Any]     					=   image_classifier([image] * 5	,    candidate_labels=["cat", "plane", "remote"]	,    batch_size=2	)
           self.assertEqual(
               nested_simplify(SCREAMING_SNAKE_CASE__	)	,    [
                   [
                       {"score": 0.511, "label": "remote"},
                       {"score": 0.485, "label": "cat"},
                       {"score": 0.004, "label": "plane"},
                   ],
               ]
               * 5	,    )











"""simple docstring"""







def       _lowerCamelCase				(							UpperCAmelCase_ :       bytes     )	-> str:






	"""simple docstring"""





	return "".join([hex(UpperCAmelCase_     )[2:].zfill(2     ).upper() for byte in list(UpperCAmelCase_     )]     )

def       _lowerCamelCase				(							UpperCAmelCase_ :       str     )	-> bytes:






	"""simple docstring"""





	if (len(UpperCAmelCase_     ) % 2) != 0:
		raise ValueError(
		    "Base16 encoded data is invalid:\nData does not have an even number of hex digits."     )
	# Check the character set - the standard base16 alphabet
	# is uppercase according to RFC3548 section 6
	if not set(UpperCAmelCase_     ) <= set("0123456789ABCDEF"     ):
		raise ValueError(
		    "Base16 encoded data is invalid:\nData is not uppercase hex or it contains invalid characters."     )
	# For every two hexadecimal digits (= a byte), turn it into an integer.
	# Then, string the result together into bytes, and return it.
	return bytes(int(data[i] + data[i + 1],	16     ) for i in range(0,	len(UpperCAmelCase_     ),	2     )     )


if __name__ == "__main__":
			import doctest

			doctest.testmod()




