


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






									"""simple docstring"""






									@staticmethod
									def 					snake_case__					(				*snake_case   ,    **snake_case  ):

												'''simple docstring'''


												pass







@is_pipeline_test
@require_vision
@require_torch
class 							lowerCamelCase__						(				unittest.TestCase   ):






			"""simple docstring"""






			_UpperCamelCase		:       Optional[Any] 			=		MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING




			def 					snake_case__					(				self   ,    snake_case   ,    snake_case   ,    snake_case  ):

						'''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 					snake_case__					(				self   ,    snake_case   ,    snake_case  ):

						'''simple docstring'''


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

						UpperCamelCase__       =							len(_lowercase  )
						self.assertGreater(_lowercase   ,    0  )
						self.assertEqual(
						    _lowercase   ,    [
						        {
						            "score": ANY(_lowercase  ),
						            "label": ANY(_lowercase  ),
						            "box": {"xmin": ANY(_lowercase  ), "ymin": ANY(_lowercase  ), "xmax": ANY(_lowercase  ), "ymax": ANY(_lowercase  )},
						        }
						        for i in range(_lowercase  )
						    ]   ,    )




			@require_tf
			@unittest.skip("Zero Shot Object Detection not implemented in TF"  )
			def 					snake_case__					(				self  ):

						'''simple docstring'''


						pass




			@require_torch
			def 					snake_case__					(				self  ):

						'''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(_lowercase   ,    decimals=4  )   ,    [
						        {"score": 0.7235, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
						        {"score": 0.7218, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
						        {"score": 0.7184, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
						        {"score": 0.6748, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
						        {"score": 0.6656, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
						        {"score": 0.6614, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
						        {"score": 0.6456, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
						        {"score": 0.642, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
						        {"score": 0.6419, "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(_lowercase   ,    decimals=4  )   ,    [
						        [
						            {"score": 0.7235, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
						            {"score": 0.7218, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
						            {"score": 0.7184, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
						            {"score": 0.6748, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
						            {"score": 0.6656, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
						            {"score": 0.6614, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
						            {"score": 0.6456, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
						            {"score": 0.642, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
						            {"score": 0.6419, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
						        ]
						    ]   ,    )




			@require_torch
			@slow
			def 					snake_case__					(				self  ):

						'''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(_lowercase   ,    decimals=4  )   ,    [
						        {"score": 0.2868, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
						        {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
						        {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
						        {"score": 0.1474, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
						        {"score": 0.1208, "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(_lowercase   ,    decimals=4  )   ,    [
						        [
						            {"score": 0.2868, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
						            {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
						            {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
						            {"score": 0.1474, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
						            {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
						        ],
						        [
						            {"score": 0.2868, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
						            {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
						            {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
						            {"score": 0.1474, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
						            {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
						        ],
						    ]   ,    )




			@require_tf
			@unittest.skip("Zero Shot Object Detection not implemented in TF"  )
			def 					snake_case__					(				self  ):

						'''simple docstring'''


						pass




			@require_torch
			@slow
			def 					snake_case__					(				self  ):

						'''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=_lowercase   ,    )
						self.assertEqual(
						    nested_simplify(_lowercase   ,    decimals=4  )   ,    [
						        {"score": 0.2868, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
						        {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
						        {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
						    ]   ,    )







			@require_torch
			@slow
			def 					snake_case__					(				self  ):

						'''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=_lowercase   ,    )
						self.assertEqual(
						    nested_simplify(_lowercase   ,    decimals=4  )   ,    [
						        {"score": 0.2868, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
						        {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
						    ]   ,    )







"""simple docstring"""







def  __SCREAMING_SNAKE_CASE		(			lowerCamelCase_:							int     ,		lowerCamelCase_:							int ):
						"""simple docstring"""






						return int((input_a, input_a).count(0 ) != 0 )

def  __SCREAMING_SNAKE_CASE		(			):
						"""simple docstring"""






						assert nand_gate(0     ,		0 ) == 1
						assert nand_gate(0     ,		1 ) == 1
						assert nand_gate(1     ,		0 ) == 1
						assert nand_gate(1     ,		1 ) == 0


if __name__ == "__main__":
			print(nand_gate(0, 0))
			print(nand_gate(0, 1))
			print(nand_gate(1, 0))
			print(nand_gate(1, 1))



