


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 		a_      (	*__snake_case      , **__snake_case   ):
          pass

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







    """simple docstring"""

    __magic_name__        =		MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING
    def 		a_      (	self      , __snake_case      , __snake_case      , __snake_case   ):
         snake_case					=    pipeline(
             '''zero-shot-object-detection'''      , model='''hf-internal-testing/tiny-random-owlvit-object-detection'''   )

         snake_case					=    [
             {
                 '''image''': '''./tests/fixtures/tests_samples/COCO/000000039769.png''',
                 '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
             }
         ]
         return object_detector, examples
    def 		a_      (	self      , __snake_case      , __snake_case   ):
         snake_case					=    object_detector(examples[0]      , threshold=0.0   )

         snake_case					=    len(__snake_case   )
         self.assertGreater(__snake_case      , 0   )
         self.assertEqual(
             __snake_case      , [
                 {
                     '''score''': ANY(__snake_case   ),
                     '''label''': ANY(__snake_case   ),
                     '''box''': {'''xmin''': ANY(__snake_case   ), '''ymin''': ANY(__snake_case   ), '''xmax''': ANY(__snake_case   ), '''ymax''': ANY(__snake_case   )},
                 }
                 for i in range(__snake_case   )
             ]      , )
    @require_tf
    @unittest.skip('''Zero Shot Object Detection not implemented in TF'''   )
    def 		a_      (	self   ):
         pass
    @require_torch
    def 		a_      (	self   ):
         snake_case					=    pipeline(
             '''zero-shot-object-detection'''      , model='''hf-internal-testing/tiny-random-owlvit-object-detection'''   )

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

         self.assertEqual(
             nested_simplify(__snake_case      , decimals=4   )      , [
                 {'''score''': 0.7235, '''label''': '''cat''', '''box''': {'''xmin''': 2_0_4, '''ymin''': 1_6_7, '''xmax''': 2_3_2, '''ymax''': 1_9_0}},
                 {'''score''': 0.7218, '''label''': '''remote''', '''box''': {'''xmin''': 2_0_4, '''ymin''': 1_6_7, '''xmax''': 2_3_2, '''ymax''': 1_9_0}},
                 {'''score''': 0.7184, '''label''': '''couch''', '''box''': {'''xmin''': 2_0_4, '''ymin''': 1_6_7, '''xmax''': 2_3_2, '''ymax''': 1_9_0}},
                 {'''score''': 0.6748, '''label''': '''remote''', '''box''': {'''xmin''': 5_7_1, '''ymin''': 8_3, '''xmax''': 5_9_8, '''ymax''': 1_0_3}},
                 {'''score''': 0.6656, '''label''': '''cat''', '''box''': {'''xmin''': 5_7_1, '''ymin''': 8_3, '''xmax''': 5_9_8, '''ymax''': 1_0_3}},
                 {'''score''': 0.6614, '''label''': '''couch''', '''box''': {'''xmin''': 5_7_1, '''ymin''': 8_3, '''xmax''': 5_9_8, '''ymax''': 1_0_3}},
                 {'''score''': 0.6456, '''label''': '''remote''', '''box''': {'''xmin''': 4_9_4, '''ymin''': 1_0_5, '''xmax''': 5_2_1, '''ymax''': 1_2_7}},
                 {'''score''': 0.642, '''label''': '''remote''', '''box''': {'''xmin''': 6_7, '''ymin''': 2_7_4, '''xmax''': 9_3, '''ymax''': 2_9_7}},
                 {'''score''': 0.6419, '''label''': '''cat''', '''box''': {'''xmin''': 4_9_4, '''ymin''': 1_0_5, '''xmax''': 5_2_1, '''ymax''': 1_2_7}},
             ]      , )

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

         self.assertEqual(
             nested_simplify(__snake_case      , decimals=4   )      , [
                 [
                     {'''score''': 0.7235, '''label''': '''cat''', '''box''': {'''xmin''': 2_0_4, '''ymin''': 1_6_7, '''xmax''': 2_3_2, '''ymax''': 1_9_0}},
                     {'''score''': 0.7218, '''label''': '''remote''', '''box''': {'''xmin''': 2_0_4, '''ymin''': 1_6_7, '''xmax''': 2_3_2, '''ymax''': 1_9_0}},
                     {'''score''': 0.7184, '''label''': '''couch''', '''box''': {'''xmin''': 2_0_4, '''ymin''': 1_6_7, '''xmax''': 2_3_2, '''ymax''': 1_9_0}},
                     {'''score''': 0.6748, '''label''': '''remote''', '''box''': {'''xmin''': 5_7_1, '''ymin''': 8_3, '''xmax''': 5_9_8, '''ymax''': 1_0_3}},
                     {'''score''': 0.6656, '''label''': '''cat''', '''box''': {'''xmin''': 5_7_1, '''ymin''': 8_3, '''xmax''': 5_9_8, '''ymax''': 1_0_3}},
                     {'''score''': 0.6614, '''label''': '''couch''', '''box''': {'''xmin''': 5_7_1, '''ymin''': 8_3, '''xmax''': 5_9_8, '''ymax''': 1_0_3}},
                     {'''score''': 0.6456, '''label''': '''remote''', '''box''': {'''xmin''': 4_9_4, '''ymin''': 1_0_5, '''xmax''': 5_2_1, '''ymax''': 1_2_7}},
                     {'''score''': 0.642, '''label''': '''remote''', '''box''': {'''xmin''': 6_7, '''ymin''': 2_7_4, '''xmax''': 9_3, '''ymax''': 2_9_7}},
                     {'''score''': 0.6419, '''label''': '''cat''', '''box''': {'''xmin''': 4_9_4, '''ymin''': 1_0_5, '''xmax''': 5_2_1, '''ymax''': 1_2_7}},
                 ]
             ]      , )
    @require_torch
    @slow
    def 		a_      (	self   ):
         snake_case					=    pipeline('''zero-shot-object-detection'''   )

         snake_case					=    object_detector(
             '''http://images.cocodataset.org/val2017/000000039769.jpg'''      , candidate_labels=['''cat''', '''remote''', '''couch''']      , )
         self.assertEqual(
             nested_simplify(__snake_case      , decimals=4   )      , [
                 {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 3_2_4, '''ymin''': 2_0, '''xmax''': 6_4_0, '''ymax''': 3_7_3}},
                 {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 4_0, '''ymin''': 7_2, '''xmax''': 1_7_7, '''ymax''': 1_1_5}},
                 {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 5_5, '''xmax''': 3_1_5, '''ymax''': 4_7_2}},
                 {'''score''': 0.1474, '''label''': '''remote''', '''box''': {'''xmin''': 3_3_5, '''ymin''': 7_4, '''xmax''': 3_7_1, '''ymax''': 1_8_7}},
                 {'''score''': 0.1208, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 6_4_2, '''ymax''': 4_7_6}},
             ]      , )

         snake_case					=    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(__snake_case      , decimals=4   )      , [
                 [
                     {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 3_2_4, '''ymin''': 2_0, '''xmax''': 6_4_0, '''ymax''': 3_7_3}},
                     {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 4_0, '''ymin''': 7_2, '''xmax''': 1_7_7, '''ymax''': 1_1_5}},
                     {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 5_5, '''xmax''': 3_1_5, '''ymax''': 4_7_2}},
                     {'''score''': 0.1474, '''label''': '''remote''', '''box''': {'''xmin''': 3_3_5, '''ymin''': 7_4, '''xmax''': 3_7_1, '''ymax''': 1_8_7}},
                     {'''score''': 0.1208, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 6_4_2, '''ymax''': 4_7_6}},
                 ],
                 [
                     {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 3_2_4, '''ymin''': 2_0, '''xmax''': 6_4_0, '''ymax''': 3_7_3}},
                     {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 4_0, '''ymin''': 7_2, '''xmax''': 1_7_7, '''ymax''': 1_1_5}},
                     {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 5_5, '''xmax''': 3_1_5, '''ymax''': 4_7_2}},
                     {'''score''': 0.1474, '''label''': '''remote''', '''box''': {'''xmin''': 3_3_5, '''ymin''': 7_4, '''xmax''': 3_7_1, '''ymax''': 1_8_7}},
                     {'''score''': 0.1208, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 6_4_2, '''ymax''': 4_7_6}},
                 ],
             ]      , )
    @require_tf
    @unittest.skip('''Zero Shot Object Detection not implemented in TF'''   )
    def 		a_      (	self   ):
         pass
    @require_torch
    @slow
    def 		a_      (	self   ):
         snake_case					=    0.2
         snake_case					=    pipeline('''zero-shot-object-detection'''   )

         snake_case					=    object_detector(
             '''http://images.cocodataset.org/val2017/000000039769.jpg'''      , candidate_labels=['''cat''', '''remote''', '''couch''']      , threshold=__snake_case      , )
         self.assertEqual(
             nested_simplify(__snake_case      , decimals=4   )      , [
                 {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 3_2_4, '''ymin''': 2_0, '''xmax''': 6_4_0, '''ymax''': 3_7_3}},
                 {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 4_0, '''ymin''': 7_2, '''xmax''': 1_7_7, '''ymax''': 1_1_5}},
                 {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 5_5, '''xmax''': 3_1_5, '''ymax''': 4_7_2}},
             ]      , )




    @require_torch
    @slow
    def 		a_      (	self   ):
         snake_case					=    2
         snake_case					=    pipeline('''zero-shot-object-detection'''   )

         snake_case					=    object_detector(
             '''http://images.cocodataset.org/val2017/000000039769.jpg'''      , candidate_labels=['''cat''', '''remote''', '''couch''']      , top_k=__snake_case      , )
         self.assertEqual(
             nested_simplify(__snake_case      , decimals=4   )      , [
                 {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 3_2_4, '''ymin''': 2_0, '''xmax''': 6_4_0, '''ymax''': 3_7_3}},
                 {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 4_0, '''ymin''': 7_2, '''xmax''': 1_7_7, '''ymax''': 1_1_5}},
             ]      , )








from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_SCREAMING_SNAKE_CASE      :			int      				=   {
    "configuration_timesformer": ["TIMESFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP", "TimesformerConfig"],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _SCREAMING_SNAKE_CASE      :			Dict      				=   [
     "TIMESFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
     "TimesformerModel",
     "TimesformerForVideoClassification",
     "TimesformerPreTrainedModel",
 ]

if TYPE_CHECKING:
 from .configuration_timesformer import TIMESFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, TimesformerConfig

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_timesformer import (
      TIMESFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
      TimesformerForVideoClassification,
      TimesformerModel,
      TimesformerPreTrainedModel,
  )

else:
 import sys

 _SCREAMING_SNAKE_CASE      :			int      				=   _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)




