





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    :

         """simple docstring"""


         @staticmethod
         def 			UpperCAmelCase_       (		*__lowerCamelCase:			Dict	,    **__lowerCamelCase:			Optional[Any]					):
             '''simple docstring'''


             pass




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

      """simple docstring"""


      UpperCamelCase__  		=       MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING






      def 			UpperCAmelCase_       (		self:			List[Any]	,    __lowerCamelCase:			int	,    __lowerCamelCase:			Dict	,    __lowerCamelCase:			List[str]					):
          '''simple docstring'''


          UpperCamelCase__:	Union[str, Any]					=     pipeline(
              "zero-shot-object-detection"	,    model="hf-internal-testing/tiny-random-owlvit-object-detection"					)

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






      def 			UpperCAmelCase_       (		self:			str	,    __lowerCamelCase:			List[str]	,    __lowerCamelCase:			List[Any]					):
          '''simple docstring'''


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

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






      @require_tf
      @unittest.skip("Zero Shot Object Detection not implemented in TF"					)
      def 			UpperCAmelCase_       (		self:			List[str]					):
          '''simple docstring'''


          pass






      @require_torch
      def 			UpperCAmelCase_       (		self:			int					):
          '''simple docstring'''


          UpperCamelCase__:	Optional[Any]					=     pipeline(
              "zero-shot-object-detection"	,    model="hf-internal-testing/tiny-random-owlvit-object-detection"					)

          UpperCamelCase__:	str					=     object_detector(
              "./tests/fixtures/tests_samples/COCO/000000039769.png"	,    candidate_labels=["cat", "remote", "couch"]	,    threshold=0.64	,    )

          self.assertEqual(
              nested_simplify(__lowerCamelCase	,    decimals=4					)	,    [
                  {"score": 0.7_235, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                  {"score": 0.7_218, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                  {"score": 0.7_184, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                  {"score": 0.6_748, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                  {"score": 0.6_656, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                  {"score": 0.6_614, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                  {"score": 0.6_456, "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.6_419, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
              ]	,    )

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

          self.assertEqual(
              nested_simplify(__lowerCamelCase	,    decimals=4					)	,    [
                  [
                      {"score": 0.7_235, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                      {"score": 0.7_218, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                      {"score": 0.7_184, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                      {"score": 0.6_748, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                      {"score": 0.6_656, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                      {"score": 0.6_614, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                      {"score": 0.6_456, "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.6_419, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
                  ]
              ]	,    )






      @require_torch
      @slow
      def 			UpperCAmelCase_       (		self:			str					):
          '''simple docstring'''


          UpperCamelCase__:	Optional[Any]					=     pipeline("zero-shot-object-detection"					)

          UpperCamelCase__:	int					=     object_detector(
              "http://images.cocodataset.org/val2017/000000039769.jpg"	,    candidate_labels=["cat", "remote", "couch"]	,    )
          self.assertEqual(
              nested_simplify(__lowerCamelCase	,    decimals=4					)	,    [
                  {"score": 0.2_868, "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.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                  {"score": 0.1_474, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                  {"score": 0.1_208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
              ]	,    )

          UpperCamelCase__:	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(__lowerCamelCase	,    decimals=4					)	,    [
                  [
                      {"score": 0.2_868, "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.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                      {"score": 0.1_474, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                      {"score": 0.1_208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
                  ],
                  [
                      {"score": 0.2_868, "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.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                      {"score": 0.1_474, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                      {"score": 0.1_208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
                  ],
              ]	,    )






      @require_tf
      @unittest.skip("Zero Shot Object Detection not implemented in TF"					)
      def 			UpperCAmelCase_       (		self:			str					):
          '''simple docstring'''


          pass






      @require_torch
      @slow
      def 			UpperCAmelCase_       (		self:			Tuple					):
          '''simple docstring'''


          UpperCamelCase__:	List[Any]					=     0.2
          UpperCamelCase__:	int					=     pipeline("zero-shot-object-detection"					)

          UpperCamelCase__:	Dict					=     object_detector(
              "http://images.cocodataset.org/val2017/000000039769.jpg"	,    candidate_labels=["cat", "remote", "couch"]	,    threshold=__lowerCamelCase	,    )
          self.assertEqual(
              nested_simplify(__lowerCamelCase	,    decimals=4					)	,    [
                  {"score": 0.2_868, "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.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
              ]	,    )






      @require_torch
      @slow
      def 			UpperCAmelCase_       (		self:			int					):
          '''simple docstring'''


          UpperCamelCase__:	Optional[int]					=     2
          UpperCamelCase__:	str					=     pipeline("zero-shot-object-detection"					)

          UpperCamelCase__:	Union[str, Any]					=     object_detector(
              "http://images.cocodataset.org/val2017/000000039769.jpg"	,    candidate_labels=["cat", "remote", "couch"]	,    top_k=__lowerCamelCase	,    )
          self.assertEqual(
              nested_simplify(__lowerCamelCase	,    decimals=4					)	,    [
                  {"score": 0.2_868, "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}},
              ]	,    )








def 				lowerCAmelCase_ (							A_):
    if not all(char in "01" for char in bin_string):
        raise ValueError("Non-binary value was passed to the function")
    if not bin_string:
        raise ValueError("Empty string was passed to the function")
    UpperCamelCase__:	List[Any]					=     ""
    while len(A_) % 3 != 0:
        UpperCamelCase__:	int					=     "0" + bin_string
    UpperCamelCase__:	Optional[int]					=     [
        bin_string[index : index + 3]
        for index in range(len(A_))
        if index % 3 == 0
    ]
    for bin_group in bin_string_in_3_list:
        UpperCamelCase__:	Union[str, Any]					=     0
        for index, val in enumerate(A_):
            oct_val += int(2 ** (2 - index) * int(A_))
        oct_string += str(A_)
    return oct_string


if __name__ == "__main__":
   from doctest import testmod

   testmod()

