


'''simple docstring'''



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    :




								@staticmethod
								def 				__UpperCAmelCase							(       *__a						,    **__a							):

													'''simple docstring'''





													pass





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




	@require_torch
	def 				__UpperCAmelCase							(       self							):

						'''simple docstring'''





						__a      :	Dict    =  pipeline(
						    model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification'						,    )
						__a      :	Optional[Any]    =  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'							)
						__a      :	Optional[Any]    =  image_classifier(__a						,    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(__a							)						,    [
						        [{'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'}],
						    ]						,    )

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




	@require_tf
	def 				__UpperCAmelCase							(       self							):

						'''simple docstring'''





						__a      :	Union[str, Any]    =  pipeline(
						    model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification'						,    framework='tf'							)
						__a      :	Tuple    =  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'							)
						__a      :	Tuple    =  image_classifier(__a						,    candidate_labels=['a', 'b', 'c']							)

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

						__a      :	Union[str, Any]    =  image_classifier([image] * 5						,    candidate_labels=['A', 'B', 'C']						,    batch_size=2							)
						self.assertEqual(
						    nested_simplify(__a							)						,    [
						        [
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						        ],
						        [
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						        ],
						        [
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						        ],
						        [
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						        ],
						        [
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						            {'score': 0.333, 'label': ANY(__a							)},
						        ],
						    ]						,    )




	@slow
	@require_torch
	def 				__UpperCAmelCase							(       self							):

						'''simple docstring'''





						__a      :	Optional[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
						__a      :	Union[str, Any]    =  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'							)
						__a      :	Optional[Any]    =  image_classifier(__a						,    candidate_labels=['cat', 'plane', 'remote']							)

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

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





	@slow
	@require_tf
	def 				__UpperCAmelCase							(       self							):

						'''simple docstring'''





						__a      :	Tuple    =  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
						__a      :	int    =  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'							)
						__a      :	Dict    =  image_classifier(__a						,    candidate_labels=['cat', 'plane', 'remote']							)
						self.assertEqual(
						    nested_simplify(__a							)						,    [
						        {'score': 0.511, 'label': 'remote'},
						        {'score': 0.485, 'label': 'cat'},
						        {'score': 0.004, 'label': 'plane'},
						    ]						,    )

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







'''simple docstring'''



from .imports import is_rich_available


if is_rich_available():
	from rich.traceback import install

	install(show_locals=False)

else:
	raise ModuleNotFoundError('To use the rich extension, install rich with `pip install rich`')



