





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 							_UpperCamelCase					:

												@staticmethod
												def lowercase (		*_SCREAMING_SNAKE_CASE: Optional[int]					,   **_SCREAMING_SNAKE_CASE: Dict		)       -> Union[str, Any]:




																			"""simple docstring"""


																			pass



@is_pipeline_test
@require_vision
@require_torch
class 							_UpperCamelCase					(	unittest.TestCase     ):
							_UpperCamelCase				:					str         =   MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

							def lowercase (		self: int					,   _SCREAMING_SNAKE_CASE: str					,   _SCREAMING_SNAKE_CASE: int					,   _SCREAMING_SNAKE_CASE: Optional[Any]		)       -> Any:




														"""simple docstring"""


														UpperCamelCase_          =  pipeline(
														    "zero-shot-object-detection"					,   model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

														UpperCamelCase_          =  [
														    {
														        "image": "./tests/fixtures/tests_samples/COCO/000000039769.png",
														        "candidate_labels": ["cat", "remote", "couch"],
														    }
														]
														return object_detector, examples

							def lowercase (		self: Optional[Any]					,   _SCREAMING_SNAKE_CASE: Tuple					,   _SCREAMING_SNAKE_CASE: Tuple		)       -> Optional[int]:




														"""simple docstring"""


														UpperCamelCase_          =  object_detector(examples[0]					,   threshold=0.0		)

														UpperCamelCase_          =  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 lowercase (		self: Tuple		)       -> List[str]:




														"""simple docstring"""


														pass

							@require_torch
							def lowercase (		self: Union[str, Any]		)       -> str:




														"""simple docstring"""


														UpperCamelCase_          =  pipeline(
														    "zero-shot-object-detection"					,   model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

														UpperCamelCase_          =  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.72_35, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
														        {"score": 0.72_18, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
														        {"score": 0.71_84, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
														        {"score": 0.67_48, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
														        {"score": 0.66_56, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
														        {"score": 0.66_14, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
														        {"score": 0.64_56, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
														        {"score": 0.6_42, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
														        {"score": 0.64_19, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
														    ]					,   )

														UpperCamelCase_          =  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.72_35, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
														            {"score": 0.72_18, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
														            {"score": 0.71_84, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
														            {"score": 0.67_48, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
														            {"score": 0.66_56, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
														            {"score": 0.66_14, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
														            {"score": 0.64_56, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
														            {"score": 0.6_42, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
														            {"score": 0.64_19, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
														        ]
														    ]					,   )

							@require_torch
							@slow
							def lowercase (		self: List[str]		)       -> List[str]:




														"""simple docstring"""


														UpperCamelCase_          =  pipeline("zero-shot-object-detection"		)

														UpperCamelCase_          =  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.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
														        {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
														        {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
														        {"score": 0.14_74, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
														        {"score": 0.12_08, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
														    ]					,   )

														UpperCamelCase_          =  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.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
														            {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
														            {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
														            {"score": 0.14_74, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
														            {"score": 0.12_08, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
														        ],
														        [
														            {"score": 0.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
														            {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
														            {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
														            {"score": 0.14_74, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
														            {"score": 0.12_08, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
														        ],
														    ]					,   )

							@require_tf
							@unittest.skip("Zero Shot Object Detection not implemented in TF"		)
							def lowercase (		self: List[Any]		)       -> str:




														"""simple docstring"""


														pass

							@require_torch
							@slow
							def lowercase (		self: Any		)       -> int:




														"""simple docstring"""


														UpperCamelCase_          =  0.2
														UpperCamelCase_          =  pipeline("zero-shot-object-detection"		)

														UpperCamelCase_          =  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.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
														        {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
														        {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
														    ]					,   )



							@require_torch
							@slow
							def lowercase (		self: Dict		)       -> Tuple:




														"""simple docstring"""


														UpperCamelCase_          =  2
														UpperCamelCase_          =  pipeline("zero-shot-object-detection"		)

														UpperCamelCase_          =  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.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
														        {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
														    ]					,   )








_UpperCAmelCase        =				{
    'Pillow': 'Pillow',
    'accelerate': 'accelerate>=0.11.0',
    'compel': 'compel==0.1.8',
    'black': 'black~=23.1',
    'datasets': 'datasets',
    'filelock': 'filelock',
    'flax': 'flax>=0.4.1',
    'hf-doc-builder': 'hf-doc-builder>=0.3.0',
    'huggingface-hub': 'huggingface-hub>=0.13.2',
    'requests-mock': 'requests-mock==1.10.0',
    'importlib_metadata': 'importlib_metadata',
    'invisible-watermark': 'invisible-watermark',
    'isort': 'isort>=5.5.4',
    'jax': 'jax>=0.2.8,!=0.3.2',
    'jaxlib': 'jaxlib>=0.1.65',
    'Jinja2': 'Jinja2',
    'k-diffusion': 'k-diffusion>=0.0.12',
    'torchsde': 'torchsde',
    'note_seq': 'note_seq',
    'librosa': 'librosa',
    'numpy': 'numpy',
    'omegaconf': 'omegaconf',
    'parameterized': 'parameterized',
    'protobuf': 'protobuf>=3.20.3,<4',
    'pytest': 'pytest',
    'pytest-timeout': 'pytest-timeout',
    'pytest-xdist': 'pytest-xdist',
    'ruff': 'ruff>=0.0.241',
    'safetensors': 'safetensors',
    'sentencepiece': 'sentencepiece>=0.1.91,!=0.1.92',
    'scipy': 'scipy',
    'onnx': 'onnx',
    'regex': 'regex!=2019.12.17',
    'requests': 'requests',
    'tensorboard': 'tensorboard',
    'torch': 'torch>=1.4',
    'torchvision': 'torchvision',
    'transformers': 'transformers>=4.25.1',
    'urllib3': 'urllib3<=2.0.0',
}

