




"""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    lowerCAmelCase__							:


										"""simple docstring"""





										@staticmethod
										def    snake_case     (  *lowercase__       :						Union[str, Any]     , **lowercase__       :						Dict    ):
												pass




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


				"""simple docstring"""





				@require_torch
				def    snake_case     (  self       :						Union[str, Any]    ):
						__lowercase					:		Union[str, Any]        =					pipeline(
						    model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"     , )
						__lowercase					:		Union[str, Any]        =					Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"    )
						__lowercase					:		Tuple        =					image_classifier(lowercase__     , 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(lowercase__    )     , [
						        [{"score": 0.3_3_3, "label": "a"}, {"score": 0.3_3_3, "label": "b"}, {"score": 0.3_3_3, "label": "c"}],
						        [{"score": 0.3_3_3, "label": "a"}, {"score": 0.3_3_3, "label": "c"}, {"score": 0.3_3_3, "label": "b"}],
						    ]     , )

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



				@require_tf
				def    snake_case     (  self       :						Any    ):
						__lowercase					:		List[str]        =					pipeline(
						    model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"     , framework="tf"    )
						__lowercase					:		int        =					Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"    )
						__lowercase					:		Union[str, Any]        =					image_classifier(lowercase__     , candidate_labels=["a", "b", "c"]    )

						self.assertEqual(
						    nested_simplify(lowercase__    )     , [{"score": 0.3_3_3, "label": "a"}, {"score": 0.3_3_3, "label": "b"}, {"score": 0.3_3_3, "label": "c"}]     , )

						__lowercase					:		Optional[Any]        =					image_classifier([image] * 5     , candidate_labels=["A", "B", "C"]     , batch_size=2    )
						self.assertEqual(
						    nested_simplify(lowercase__    )     , [
						        [
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						        ],
						        [
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						        ],
						        [
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						        ],
						        [
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						        ],
						        [
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						            {"score": 0.3_3_3, "label": ANY(lowercase__    )},
						        ],
						    ]     , )



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

						self.assertEqual(
						    nested_simplify(lowercase__    )     , [
						        {"score": 0.5_1_1, "label": "remote"},
						        {"score": 0.4_8_5, "label": "cat"},
						        {"score": 0.0_0_4, "label": "plane"},
						    ]     , )

						__lowercase					:		Tuple        =					image_classifier([image] * 5     , candidate_labels=["cat", "plane", "remote"]     , batch_size=2    )
						self.assertEqual(
						    nested_simplify(lowercase__    )     , [
						        [
						            {"score": 0.5_1_1, "label": "remote"},
						            {"score": 0.4_8_5, "label": "cat"},
						            {"score": 0.0_0_4, "label": "plane"},
						        ],
						    ]
						    * 5     , )



				@slow
				@require_tf
				def    snake_case     (  self       :						Any    ):
						__lowercase					:		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
						__lowercase					:		Union[str, Any]        =					Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"    )
						__lowercase					:		Union[str, Any]        =					image_classifier(lowercase__     , candidate_labels=["cat", "plane", "remote"]    )
						self.assertEqual(
						    nested_simplify(lowercase__    )     , [
						        {"score": 0.5_1_1, "label": "remote"},
						        {"score": 0.4_8_5, "label": "cat"},
						        {"score": 0.0_0_4, "label": "plane"},
						    ]     , )

						__lowercase					:		Union[str, Any]        =					image_classifier([image] * 5     , candidate_labels=["cat", "plane", "remote"]     , batch_size=2    )
						self.assertEqual(
						    nested_simplify(lowercase__    )     , [
						        [
						            {"score": 0.5_1_1, "label": "remote"},
						            {"score": 0.4_8_5, "label": "cat"},
						            {"score": 0.0_0_4, "label": "plane"},
						        ],
						    ]
						    * 5     , )





"""simple docstring"""




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_lowerCAmelCase							:   List[Any]				=				{
    "configuration_lilt": ["LILT_PRETRAINED_CONFIG_ARCHIVE_MAP", "LiltConfig"],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _lowerCAmelCase							:   int				=				[
     "LILT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "LiltForQuestionAnswering",
     "LiltForSequenceClassification",
     "LiltForTokenClassification",
     "LiltModel",
     "LiltPreTrainedModel",
 ]

if TYPE_CHECKING:
 from .configuration_lilt import LILT_PRETRAINED_CONFIG_ARCHIVE_MAP, LiltConfig

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_lilt import (
      LILT_PRETRAINED_MODEL_ARCHIVE_LIST,
      LiltForQuestionAnswering,
      LiltForSequenceClassification,
      LiltForTokenClassification,
      LiltModel,
      LiltPreTrainedModel,
  )

else:
 import sys

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