




"""simple docstring"""


import unittest

from transformers import is_vision_available
from transformers.pipelines import 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       lowercase:







      '''simple docstring'''





      @staticmethod
      def 				UpperCamelCase_     (       *a_:	Dict,   **a_:	Union[str, Any]	):




        '''simple docstring'''



        pass






@is_pipeline_test
@require_vision
class       lowercase(  unittest.TestCase				):







 '''simple docstring'''





 @require_torch
 def 				UpperCamelCase_     (       self:	Union[str, Any]	):




   '''simple docstring'''



   _snake_case							:	Tuple			=						pipeline(
       model="""hf-internal-testing/tiny-random-clip-zero-shot-image-classification""",   )
   _snake_case							:	str			=						Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""	)
   _snake_case							:	Any			=						image_classifier(a_,   candidate_labels=["""a""", """b""", """c"""]	)

   # The floating scores are so close, we enter floating error approximation and the order is not guaranteed across
   # python and torch versions.
   self.assertIn(
       nested_simplify(a_	),   [
           [{"""score""": 0.333, """label""": """a"""}, {"""score""": 0.333, """label""": """b"""}, {"""score""": 0.333, """label""": """c"""}],
           [{"""score""": 0.333, """label""": """a"""}, {"""score""": 0.333, """label""": """c"""}, {"""score""": 0.333, """label""": """b"""}],
       ],   )

   _snake_case							:	str			=						image_classifier([image] * 5,   candidate_labels=["""A""", """B""", """C"""],   batch_size=2	)
   self.assertEqual(
       nested_simplify(a_	),   [
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
       ],   )


 @require_tf
 def 				UpperCamelCase_     (       self:	Any	):




   '''simple docstring'''



   _snake_case							:	List[str]			=						pipeline(
       model="""hf-internal-testing/tiny-random-clip-zero-shot-image-classification""",   framework="""tf"""	)
   _snake_case							:	Optional[int]			=						Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""	)
   _snake_case							:	str			=						image_classifier(a_,   candidate_labels=["""a""", """b""", """c"""]	)

   self.assertEqual(
       nested_simplify(a_	),   [{"""score""": 0.333, """label""": """a"""}, {"""score""": 0.333, """label""": """b"""}, {"""score""": 0.333, """label""": """c"""}],   )

   _snake_case							:	Any			=						image_classifier([image] * 5,   candidate_labels=["""A""", """B""", """C"""],   batch_size=2	)
   self.assertEqual(
       nested_simplify(a_	),   [
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
           [
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
               {"""score""": 0.333, """label""": ANY(a_	)},
           ],
       ],   )


 @slow
 @require_torch
 def 				UpperCamelCase_     (       self:	List[str]	):




   '''simple docstring'''



   _snake_case							:	Dict			=						pipeline(
       task="""zero-shot-image-classification""",   model="""openai/clip-vit-base-patch32""",   )
   # This is an image of 2 cats with remotes and no planes
   _snake_case							:	Optional[int]			=						Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""	)
   _snake_case							:	Any			=						image_classifier(a_,   candidate_labels=["""cat""", """plane""", """remote"""]	)

   self.assertEqual(
       nested_simplify(a_	),   [
           {"""score""": 0.511, """label""": """remote"""},
           {"""score""": 0.485, """label""": """cat"""},
           {"""score""": 0.004, """label""": """plane"""},
       ],   )

   _snake_case							:	str			=						image_classifier([image] * 5,   candidate_labels=["""cat""", """plane""", """remote"""],   batch_size=2	)
   self.assertEqual(
       nested_simplify(a_	),   [
           [
               {"""score""": 0.511, """label""": """remote"""},
               {"""score""": 0.485, """label""": """cat"""},
               {"""score""": 0.004, """label""": """plane"""},
           ],
       ]
       * 5,   )


 @slow
 @require_tf
 def 				UpperCamelCase_     (       self:	Dict	):




   '''simple docstring'''



   _snake_case							:	List[Any]			=						pipeline(
       task="""zero-shot-image-classification""",   model="""openai/clip-vit-base-patch32""",   framework="""tf"""	)
   # This is an image of 2 cats with remotes and no planes
   _snake_case							:	str			=						Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""	)
   _snake_case							:	Tuple			=						image_classifier(a_,   candidate_labels=["""cat""", """plane""", """remote"""]	)
   self.assertEqual(
       nested_simplify(a_	),   [
           {"""score""": 0.511, """label""": """remote"""},
           {"""score""": 0.485, """label""": """cat"""},
           {"""score""": 0.004, """label""": """plane"""},
       ],   )

   _snake_case							:	Any			=						image_classifier([image] * 5,   candidate_labels=["""cat""", """plane""", """remote"""],   batch_size=2	)
   self.assertEqual(
       nested_simplify(a_	),   [
           [
               {"""score""": 0.511, """label""": """remote"""},
               {"""score""": 0.485, """label""": """cat"""},
               {"""score""": 0.004, """label""": """plane"""},
           ],
       ]
       * 5,   )








"""simple docstring"""


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
    is_vision_available,
)


A_      			=       {
    '''configuration_owlvit''': [
        '''OWLVIT_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''OwlViTConfig''',
        '''OwlViTOnnxConfig''',
        '''OwlViTTextConfig''',
        '''OwlViTVisionConfig''',
    ],
    '''processing_owlvit''': ['''OwlViTProcessor'''],
}


try:
     if not is_vision_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A_      			=       ['''OwlViTFeatureExtractor''']
     A_      			=       ['''OwlViTImageProcessor''']

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A_      			=       [
         '''OWLVIT_PRETRAINED_MODEL_ARCHIVE_LIST''',
         '''OwlViTModel''',
         '''OwlViTPreTrainedModel''',
         '''OwlViTTextModel''',
         '''OwlViTVisionModel''',
         '''OwlViTForObjectDetection''',
     ]

if TYPE_CHECKING:
     from .configuration_owlvit import (
         OWLVIT_PRETRAINED_CONFIG_ARCHIVE_MAP,
         OwlViTConfig,
         OwlViTOnnxConfig,
         OwlViTTextConfig,
         OwlViTVisionConfig,
     )
     from .processing_owlvit import OwlViTProcessor

     try:
          if not is_vision_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .feature_extraction_owlvit import OwlViTFeatureExtractor
          from .image_processing_owlvit import OwlViTImageProcessor

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_owlvit import (
              OWLVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
              OwlViTForObjectDetection,
              OwlViTModel,
              OwlViTPreTrainedModel,
              OwlViTTextModel,
              OwlViTVisionModel,
          )

else:
     import sys

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


