
"""simple docstring"""







import unittest

from transformers import MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING, is_vision_available, 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 			A__	:

									@staticmethod
									def 							__lowerCamelCase							(				*_SCREAMING_SNAKE_CASE	,		**_SCREAMING_SNAKE_CASE			):
										pass




@is_pipeline_test
@require_vision
@require_torch
class 			A__	(     unittest.TestCase):
		A_						:	Any           =     MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

		def 							__lowerCamelCase							(				self	,		_SCREAMING_SNAKE_CASE	,		_SCREAMING_SNAKE_CASE	,		_SCREAMING_SNAKE_CASE			):
			__lowerCAmelCase      :						Tuple						      =				pipeline(
			    'zero-shot-object-detection'	,		model='hf-internal-testing/tiny-random-owlvit-object-detection'			)

			__lowerCAmelCase      :						List[str]						      =				[
			    {
			        'image': './tests/fixtures/tests_samples/COCO/000000039769.png',
			        'candidate_labels': ['cat', 'remote', 'couch'],
			    }
			]
			return object_detector, examples

		def 							__lowerCamelCase							(				self	,		_SCREAMING_SNAKE_CASE	,		_SCREAMING_SNAKE_CASE			):
			__lowerCAmelCase      :						Union[str, Any]						      =				object_detector(examples[0]	,		threshold=0.0			)

			__lowerCAmelCase      :						List[str]						      =				len(_SCREAMING_SNAKE_CASE			)
			self.assertGreater(_SCREAMING_SNAKE_CASE	,		0			)
			self.assertEqual(
			    _SCREAMING_SNAKE_CASE	,		[
			        {
			            'score': ANY(_SCREAMING_SNAKE_CASE			),
			            'label': ANY(_SCREAMING_SNAKE_CASE			),
			            'box': {'xmin': ANY(_SCREAMING_SNAKE_CASE			), 'ymin': ANY(_SCREAMING_SNAKE_CASE			), 'xmax': ANY(_SCREAMING_SNAKE_CASE			), 'ymax': ANY(_SCREAMING_SNAKE_CASE			)},
			        }
			        for i in range(_SCREAMING_SNAKE_CASE			)
			    ]	,		)

		@require_tf
		@unittest.skip('Zero Shot Object Detection not implemented in TF'			)
		def 							__lowerCamelCase							(				self			):
			pass

		@require_torch
		def 							__lowerCamelCase							(				self			):
			__lowerCAmelCase      :						str						      =				pipeline(
			    'zero-shot-object-detection'	,		model='hf-internal-testing/tiny-random-owlvit-object-detection'			)

			__lowerCAmelCase      :						Tuple						      =				object_detector(
			    './tests/fixtures/tests_samples/COCO/000000039769.png'	,		candidate_labels=['cat', 'remote', 'couch']	,		threshold=0.64	,		)

			self.assertEqual(
			    nested_simplify(_SCREAMING_SNAKE_CASE	,		decimals=4			)	,		[
			        {'score': 0.7235, 'label': 'cat', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
			        {'score': 0.7218, 'label': 'remote', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
			        {'score': 0.7184, 'label': 'couch', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
			        {'score': 0.6748, 'label': 'remote', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
			        {'score': 0.6656, 'label': 'cat', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
			        {'score': 0.6614, 'label': 'couch', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
			        {'score': 0.6456, 'label': 'remote', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
			        {'score': 0.642, 'label': 'remote', 'box': {'xmin': 67, 'ymin': 2_74, 'xmax': 93, 'ymax': 2_97}},
			        {'score': 0.6419, 'label': 'cat', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
			    ]	,		)

			__lowerCAmelCase      :						List[Any]						      =				object_detector(
			    [
			        {
			            'image': './tests/fixtures/tests_samples/COCO/000000039769.png',
			            'candidate_labels': ['cat', 'remote', 'couch'],
			        }
			    ]	,		threshold=0.64	,		)

			self.assertEqual(
			    nested_simplify(_SCREAMING_SNAKE_CASE	,		decimals=4			)	,		[
			        [
			            {'score': 0.7235, 'label': 'cat', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
			            {'score': 0.7218, 'label': 'remote', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
			            {'score': 0.7184, 'label': 'couch', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
			            {'score': 0.6748, 'label': 'remote', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
			            {'score': 0.6656, 'label': 'cat', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
			            {'score': 0.6614, 'label': 'couch', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
			            {'score': 0.6456, 'label': 'remote', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
			            {'score': 0.642, 'label': 'remote', 'box': {'xmin': 67, 'ymin': 2_74, 'xmax': 93, 'ymax': 2_97}},
			            {'score': 0.6419, 'label': 'cat', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
			        ]
			    ]	,		)

		@require_torch
		@slow
		def 							__lowerCamelCase							(				self			):
			__lowerCAmelCase      :						Union[str, Any]						      =				pipeline('zero-shot-object-detection'			)

			__lowerCAmelCase      :						List[Any]						      =				object_detector(
			    'http://images.cocodataset.org/val2017/000000039769.jpg'	,		candidate_labels=['cat', 'remote', 'couch']	,		)
			self.assertEqual(
			    nested_simplify(_SCREAMING_SNAKE_CASE	,		decimals=4			)	,		[
			        {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
			        {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
			        {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
			        {'score': 0.1474, 'label': 'remote', 'box': {'xmin': 3_35, 'ymin': 74, 'xmax': 3_71, 'ymax': 1_87}},
			        {'score': 0.1208, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 6_42, 'ymax': 4_76}},
			    ]	,		)

			__lowerCAmelCase      :						Union[str, Any]						      =				object_detector(
			    [
			        {
			            'image': 'http://images.cocodataset.org/val2017/000000039769.jpg',
			            'candidate_labels': ['cat', 'remote', 'couch'],
			        },
			        {
			            'image': 'http://images.cocodataset.org/val2017/000000039769.jpg',
			            'candidate_labels': ['cat', 'remote', 'couch'],
			        },
			    ]	,		)
			self.assertEqual(
			    nested_simplify(_SCREAMING_SNAKE_CASE	,		decimals=4			)	,		[
			        [
			            {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
			            {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
			            {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
			            {'score': 0.1474, 'label': 'remote', 'box': {'xmin': 3_35, 'ymin': 74, 'xmax': 3_71, 'ymax': 1_87}},
			            {'score': 0.1208, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 6_42, 'ymax': 4_76}},
			        ],
			        [
			            {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
			            {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
			            {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
			            {'score': 0.1474, 'label': 'remote', 'box': {'xmin': 3_35, 'ymin': 74, 'xmax': 3_71, 'ymax': 1_87}},
			            {'score': 0.1208, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 6_42, 'ymax': 4_76}},
			        ],
			    ]	,		)

		@require_tf
		@unittest.skip('Zero Shot Object Detection not implemented in TF'			)
		def 							__lowerCamelCase							(				self			):
			pass

		@require_torch
		@slow
		def 							__lowerCamelCase							(				self			):
			__lowerCAmelCase      :						Tuple						      =				0.2
			__lowerCAmelCase      :						str						      =				pipeline('zero-shot-object-detection'			)

			__lowerCAmelCase      :						Optional[Any]						      =				object_detector(
			    'http://images.cocodataset.org/val2017/000000039769.jpg'	,		candidate_labels=['cat', 'remote', 'couch']	,		threshold=_SCREAMING_SNAKE_CASE	,		)
			self.assertEqual(
			    nested_simplify(_SCREAMING_SNAKE_CASE	,		decimals=4			)	,		[
			        {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
			        {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
			        {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
			    ]	,		)







		@require_torch
		@slow
		def 							__lowerCamelCase							(				self			):
			__lowerCAmelCase      :						Any						      =				2
			__lowerCAmelCase      :						Union[str, Any]						      =				pipeline('zero-shot-object-detection'			)

			__lowerCAmelCase      :						Union[str, Any]						      =				object_detector(
			    'http://images.cocodataset.org/val2017/000000039769.jpg'	,		candidate_labels=['cat', 'remote', 'couch']	,		top_k=_SCREAMING_SNAKE_CASE	,		)
			self.assertEqual(
			    nested_simplify(_SCREAMING_SNAKE_CASE	,		decimals=4			)	,		[
			        {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
			        {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
			    ]	,		)

"""simple docstring"""







import warnings
from functools import wraps
from typing import Callable
def    __lowerCAmelCase    (_UpperCamelCase		):

	@wraps(_UpperCamelCase		)
	def _inner_fn(*_UpperCamelCase	,  **_UpperCamelCase		):
		warnings.warn(
		    (F"'{fn.__name__}' is experimental and might be subject to breaking changes in the future.")	,  _UpperCamelCase	,  )
		return fn(*_UpperCamelCase	,  **_UpperCamelCase		)

	return _inner_fn