


'''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   snake_case					:





       """simple docstring"""




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







        """simple docstring"""
        pass





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





  """simple docstring"""




  _lowerCamelCase						=						MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING






  def 						snake_case	(					self    ,						UpperCamelCase    ,						UpperCamelCase    ,						UpperCamelCase  ):







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

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






  def 						snake_case	(					self    ,						UpperCamelCase    ,						UpperCamelCase  ):







   """simple docstring"""
   lowerCamelCase_  				=						object_detector(examples[0]    ,						threshold=0.0  )

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






  @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"""
   lowerCamelCase_  				=						pipeline(
       "zero-shot-object-detection"    ,						model="hf-internal-testing/tiny-random-owlvit-object-detection"  )

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

   self.assertEqual(
       nested_simplify(UpperCamelCase_    ,						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}},
       ]    ,						)

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

   self.assertEqual(
       nested_simplify(UpperCamelCase_    ,						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 						snake_case	(					self  ):







   """simple docstring"""
   lowerCamelCase_  				=						pipeline("zero-shot-object-detection"  )

   lowerCamelCase_  				=						object_detector(
       "http://images.cocodataset.org/val2017/000000039769.jpg"    ,						candidate_labels=["cat", "remote", "couch"]    ,						)
   self.assertEqual(
       nested_simplify(UpperCamelCase_    ,						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}},
       ]    ,						)

   lowerCamelCase_  				=						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(UpperCamelCase_    ,						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 						snake_case	(					self  ):







   """simple docstring"""
   pass






  @require_torch
  @slow
  def 						snake_case	(					self  ):







   """simple docstring"""
   lowerCamelCase_  				=						0.2
   lowerCamelCase_  				=						pipeline("zero-shot-object-detection"  )

   lowerCamelCase_  				=						object_detector(
       "http://images.cocodataset.org/val2017/000000039769.jpg"    ,						candidate_labels=["cat", "remote", "couch"]    ,						threshold=UpperCamelCase_    ,						)
   self.assertEqual(
       nested_simplify(UpperCamelCase_    ,						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 						snake_case	(					self  ):







   """simple docstring"""
   lowerCamelCase_  				=						2
   lowerCamelCase_  				=						pipeline("zero-shot-object-detection"  )

   lowerCamelCase_  				=						object_detector(
       "http://images.cocodataset.org/val2017/000000039769.jpg"    ,						candidate_labels=["cat", "remote", "couch"]    ,						top_k=UpperCamelCase_    ,						)
   self.assertEqual(
       nested_simplify(UpperCamelCase_    ,						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}},
       ]    ,						)







'''simple docstring'''

from __future__ import annotations





def __snake_case      (   UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int	):
 if b == 0:
  return (1, 0)
 ((lowerCamelCase_)				,(lowerCamelCase_))  				=						extended_euclid(UpperCAmelCase_      ,       a % b	)
 lowerCamelCase_  				=						a // b
 return (y, x - k * y)





def __snake_case      (   UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int	):
 ((lowerCamelCase_)				,(lowerCamelCase_))  				=						extended_euclid(UpperCAmelCase_      ,       UpperCAmelCase_	)
 lowerCamelCase_  				=						na * na
 lowerCamelCase_  				=						ra * x * na + ra * y * na
 return (n % m + m) % m





def __snake_case      (   UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int	):
 ((lowerCamelCase_)				,(lowerCamelCase_))  				=						extended_euclid(UpperCAmelCase_      ,       UpperCAmelCase_	)
 if b < 0:
  lowerCamelCase_  				=						(b % n + n) % n
 return b





def __snake_case      (   UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int      ,       UpperCAmelCase_		:		int	):
 lowerCamelCase_				,lowerCamelCase_  				=						invert_modulo(UpperCAmelCase_      ,       UpperCAmelCase_	), invert_modulo(UpperCAmelCase_      ,       UpperCAmelCase_	)
 lowerCamelCase_  				=						na * na
 lowerCamelCase_  				=						ra * x * na + ra * y * na
 return (n % m + m) % m


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

     testmod(name="""chinese_remainder_theorem""", verbose=True)
     testmod(name="""chinese_remainder_theorem2""", verbose=True)
     testmod(name="""invert_modulo""", verbose=True)
     testmod(name="""extended_euclid""", verbose=True)



