


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

              @staticmethod
              def 						UpperCAmelCase(   *lowerCamelCase_      :     Union[str, Any]      ,							**lowerCamelCase_      :     str    ):
                   pass


@is_pipeline_test
@require_vision
@require_torch
class   a__	(						unittest.TestCase    ):
       lowerCamelCase__:     List[str]							    =     MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

       def 						UpperCAmelCase(   self      :     Union[str, Any]      ,							lowerCamelCase_      :     List[Any]      ,							lowerCamelCase_      :     int      ,							lowerCamelCase_      :     Tuple    ):
            a_    :     Optional[int]										=    pipeline(
                """zero-shot-object-detection"""      ,							model="""hf-internal-testing/tiny-random-owlvit-object-detection"""    )

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

       def 						UpperCAmelCase(   self      :     Tuple      ,							lowerCamelCase_      :     Optional[int]      ,							lowerCamelCase_      :     List[Any]    ):
            a_    :     Optional[int]										=    object_detector(examples[0]      ,							threshold=0.0    )

            a_    :     List[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      :     Tuple    ):
            pass

       @require_torch
       def 						UpperCAmelCase(   self      :     Optional[int]    ):
            a_    :     Tuple										=    pipeline(
                """zero-shot-object-detection"""      ,							model="""hf-internal-testing/tiny-random-owlvit-object-detection"""    )

            a_    :     Tuple										=    object_detector(
                """./tests/fixtures/tests_samples/COCO/000000039769.png"""      ,							candidate_labels=["""cat""", """remote""", """couch"""]      ,							threshold=0.6_4      ,							)

            self.assertEqual(
                nested_simplify(lowerCamelCase_      ,							decimals=4    )      ,							[
                    {"""score""": 0.7_2_3_5, """label""": """cat""", """box""": {"""xmin""": 2_0_4, """ymin""": 1_6_7, """xmax""": 2_3_2, """ymax""": 1_9_0}},
                    {"""score""": 0.7_2_1_8, """label""": """remote""", """box""": {"""xmin""": 2_0_4, """ymin""": 1_6_7, """xmax""": 2_3_2, """ymax""": 1_9_0}},
                    {"""score""": 0.7_1_8_4, """label""": """couch""", """box""": {"""xmin""": 2_0_4, """ymin""": 1_6_7, """xmax""": 2_3_2, """ymax""": 1_9_0}},
                    {"""score""": 0.6_7_4_8, """label""": """remote""", """box""": {"""xmin""": 5_7_1, """ymin""": 8_3, """xmax""": 5_9_8, """ymax""": 1_0_3}},
                    {"""score""": 0.6_6_5_6, """label""": """cat""", """box""": {"""xmin""": 5_7_1, """ymin""": 8_3, """xmax""": 5_9_8, """ymax""": 1_0_3}},
                    {"""score""": 0.6_6_1_4, """label""": """couch""", """box""": {"""xmin""": 5_7_1, """ymin""": 8_3, """xmax""": 5_9_8, """ymax""": 1_0_3}},
                    {"""score""": 0.6_4_5_6, """label""": """remote""", """box""": {"""xmin""": 4_9_4, """ymin""": 1_0_5, """xmax""": 5_2_1, """ymax""": 1_2_7}},
                    {"""score""": 0.6_4_2, """label""": """remote""", """box""": {"""xmin""": 6_7, """ymin""": 2_7_4, """xmax""": 9_3, """ymax""": 2_9_7}},
                    {"""score""": 0.6_4_1_9, """label""": """cat""", """box""": {"""xmin""": 4_9_4, """ymin""": 1_0_5, """xmax""": 5_2_1, """ymax""": 1_2_7}},
                ]      ,							)

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

            self.assertEqual(
                nested_simplify(lowerCamelCase_      ,							decimals=4    )      ,							[
                    [
                        {"""score""": 0.7_2_3_5, """label""": """cat""", """box""": {"""xmin""": 2_0_4, """ymin""": 1_6_7, """xmax""": 2_3_2, """ymax""": 1_9_0}},
                        {"""score""": 0.7_2_1_8, """label""": """remote""", """box""": {"""xmin""": 2_0_4, """ymin""": 1_6_7, """xmax""": 2_3_2, """ymax""": 1_9_0}},
                        {"""score""": 0.7_1_8_4, """label""": """couch""", """box""": {"""xmin""": 2_0_4, """ymin""": 1_6_7, """xmax""": 2_3_2, """ymax""": 1_9_0}},
                        {"""score""": 0.6_7_4_8, """label""": """remote""", """box""": {"""xmin""": 5_7_1, """ymin""": 8_3, """xmax""": 5_9_8, """ymax""": 1_0_3}},
                        {"""score""": 0.6_6_5_6, """label""": """cat""", """box""": {"""xmin""": 5_7_1, """ymin""": 8_3, """xmax""": 5_9_8, """ymax""": 1_0_3}},
                        {"""score""": 0.6_6_1_4, """label""": """couch""", """box""": {"""xmin""": 5_7_1, """ymin""": 8_3, """xmax""": 5_9_8, """ymax""": 1_0_3}},
                        {"""score""": 0.6_4_5_6, """label""": """remote""", """box""": {"""xmin""": 4_9_4, """ymin""": 1_0_5, """xmax""": 5_2_1, """ymax""": 1_2_7}},
                        {"""score""": 0.6_4_2, """label""": """remote""", """box""": {"""xmin""": 6_7, """ymin""": 2_7_4, """xmax""": 9_3, """ymax""": 2_9_7}},
                        {"""score""": 0.6_4_1_9, """label""": """cat""", """box""": {"""xmin""": 4_9_4, """ymin""": 1_0_5, """xmax""": 5_2_1, """ymax""": 1_2_7}},
                    ]
                ]      ,							)

       @require_torch
       @slow
       def 						UpperCAmelCase(   self      :     Dict    ):
            a_    :     int										=    pipeline("""zero-shot-object-detection"""    )

            a_    :     Optional[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_8_6_8, """label""": """cat""", """box""": {"""xmin""": 3_2_4, """ymin""": 2_0, """xmax""": 6_4_0, """ymax""": 3_7_3}},
                    {"""score""": 0.2_7_7, """label""": """remote""", """box""": {"""xmin""": 4_0, """ymin""": 7_2, """xmax""": 1_7_7, """ymax""": 1_1_5}},
                    {"""score""": 0.2_5_3_7, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 5_5, """xmax""": 3_1_5, """ymax""": 4_7_2}},
                    {"""score""": 0.1_4_7_4, """label""": """remote""", """box""": {"""xmin""": 3_3_5, """ymin""": 7_4, """xmax""": 3_7_1, """ymax""": 1_8_7}},
                    {"""score""": 0.1_2_0_8, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 6_4_2, """ymax""": 4_7_6}},
                ]      ,							)

            a_    :     Optional[int]										=    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_8_6_8, """label""": """cat""", """box""": {"""xmin""": 3_2_4, """ymin""": 2_0, """xmax""": 6_4_0, """ymax""": 3_7_3}},
                        {"""score""": 0.2_7_7, """label""": """remote""", """box""": {"""xmin""": 4_0, """ymin""": 7_2, """xmax""": 1_7_7, """ymax""": 1_1_5}},
                        {"""score""": 0.2_5_3_7, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 5_5, """xmax""": 3_1_5, """ymax""": 4_7_2}},
                        {"""score""": 0.1_4_7_4, """label""": """remote""", """box""": {"""xmin""": 3_3_5, """ymin""": 7_4, """xmax""": 3_7_1, """ymax""": 1_8_7}},
                        {"""score""": 0.1_2_0_8, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 6_4_2, """ymax""": 4_7_6}},
                    ],
                    [
                        {"""score""": 0.2_8_6_8, """label""": """cat""", """box""": {"""xmin""": 3_2_4, """ymin""": 2_0, """xmax""": 6_4_0, """ymax""": 3_7_3}},
                        {"""score""": 0.2_7_7, """label""": """remote""", """box""": {"""xmin""": 4_0, """ymin""": 7_2, """xmax""": 1_7_7, """ymax""": 1_1_5}},
                        {"""score""": 0.2_5_3_7, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 5_5, """xmax""": 3_1_5, """ymax""": 4_7_2}},
                        {"""score""": 0.1_4_7_4, """label""": """remote""", """box""": {"""xmin""": 3_3_5, """ymin""": 7_4, """xmax""": 3_7_1, """ymax""": 1_8_7}},
                        {"""score""": 0.1_2_0_8, """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 						UpperCAmelCase(   self      :     List[Any]    ):
            pass

       @require_torch
       @slow
       def 						UpperCAmelCase(   self      :     Tuple    ):
            a_    :     Tuple										=    0.2
            a_    :     Tuple										=    pipeline("""zero-shot-object-detection"""    )

            a_    :     int										=    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_8_6_8, """label""": """cat""", """box""": {"""xmin""": 3_2_4, """ymin""": 2_0, """xmax""": 6_4_0, """ymax""": 3_7_3}},
                    {"""score""": 0.2_7_7, """label""": """remote""", """box""": {"""xmin""": 4_0, """ymin""": 7_2, """xmax""": 1_7_7, """ymax""": 1_1_5}},
                    {"""score""": 0.2_5_3_7, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 5_5, """xmax""": 3_1_5, """ymax""": 4_7_2}},
                ]      ,							)

       @require_torch
       @slow
       def 						UpperCAmelCase(   self      :     Tuple    ):
            a_    :     str										=    2
            a_    :     int										=    pipeline("""zero-shot-object-detection"""    )

            a_    :     Tuple										=    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_8_6_8, """label""": """cat""", """box""": {"""xmin""": 3_2_4, """ymin""": 2_0, """xmax""": 6_4_0, """ymax""": 3_7_3}},
                    {"""score""": 0.2_7_7, """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_tokenizers_available, is_torch_available


__lowerCamelCase        =     {
    '''configuration_altclip''': [
        '''ALTCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''AltCLIPConfig''',
        '''AltCLIPTextConfig''',
        '''AltCLIPVisionConfig''',
    ],
    '''processing_altclip''': ['''AltCLIPProcessor'''],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       __lowerCamelCase        =     [
           '''ALTCLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''AltCLIPPreTrainedModel''',
           '''AltCLIPModel''',
           '''AltCLIPTextModel''',
           '''AltCLIPVisionModel''',
       ]


if TYPE_CHECKING:
       from .configuration_altclip import (
           ALTCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
           AltCLIPConfig,
           AltCLIPTextConfig,
           AltCLIPVisionConfig,
       )
       from .processing_altclip import AltCLIPProcessor

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_altclip import (
                  ALTCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                  AltCLIPModel,
                  AltCLIPPreTrainedModel,
                  AltCLIPTextModel,
                  AltCLIPVisionModel,
              )


else:
       import sys

       __lowerCamelCase        =     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)



