






'''simple docstring'''







import unittest

from transformers import (
    MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
    TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
    PreTrainedTokenizer,
    is_vision_available,
)
from transformers.pipelines import ImageClassificationPipeline, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_torch_or_tf,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
  from PIL import Image
else:




  class 					__UpperCAmelCase :

        '''simple docstring'''





        @staticmethod
        def 							lowerCamelCase     (					*_UpperCAmelCase  ,		**_UpperCAmelCase						):
               pass




@is_pipeline_test
@require_torch_or_tf
@require_vision
class 					__UpperCAmelCase (		unittest.TestCase	):

      '''simple docstring'''





      SCREAMING_SNAKE_CASE				:    List[Any]				       =					MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING
      SCREAMING_SNAKE_CASE				:    Any				       =					TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING




      def 							lowerCamelCase     (					self  ,		_UpperCAmelCase  ,		_UpperCAmelCase  ,		_UpperCAmelCase						):
             UpperCAmelCase__	:   Dict												=	ImageClassificationPipeline(model=_UpperCAmelCase  ,		image_processor=_UpperCAmelCase  ,		top_k=2						)
             UpperCAmelCase__	:   Optional[Any]												=	[
                 Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''						),
                 '''http://images.cocodataset.org/val2017/000000039769.jpg''',
             ]
             return image_classifier, examples




      def 							lowerCamelCase     (					self  ,		_UpperCAmelCase  ,		_UpperCAmelCase						):
             UpperCAmelCase__	:   str												=	image_classifier('''./tests/fixtures/tests_samples/COCO/000000039769.png'''						)

             self.assertEqual(
                 _UpperCAmelCase  ,		[
                     {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                     {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                 ]  ,		)

             import datasets

             UpperCAmelCase__	:   List[Any]												=	datasets.load_dataset('''hf-internal-testing/fixtures_image_utils'''  ,		'''image'''  ,		split='''test'''						)

             # Accepts URL + PIL.Image + lists
             UpperCAmelCase__	:   Any												=	image_classifier(
                 [
                     Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''						),
                     '''http://images.cocodataset.org/val2017/000000039769.jpg''',
                     # RGBA
                     dataset[0]['''file'''],
                     # LA
                     dataset[1]['''file'''],
                     # L
                     dataset[2]['''file'''],
                 ]						)
             self.assertEqual(
                 _UpperCAmelCase  ,		[
                     [
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                     ],
                     [
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                     ],
                     [
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                     ],
                     [
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                     ],
                     [
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                         {'''score''': ANY(_UpperCAmelCase						), '''label''': ANY(_UpperCAmelCase						)},
                     ],
                 ]  ,		)




      @require_torch
      def 							lowerCamelCase     (					self						):
             UpperCAmelCase__	:   str												=	'''hf-internal-testing/tiny-random-vit'''
             UpperCAmelCase__	:   Optional[Any]												=	pipeline('''image-classification'''  ,		model=_UpperCAmelCase						)

             UpperCAmelCase__	:   Optional[int]												=	image_classifier('''http://images.cocodataset.org/val2017/000000039769.jpg'''						)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[{'''label''': '''LABEL_1''', '''score''': 0.5_74}, {'''label''': '''LABEL_0''', '''score''': 0.4_26}]  ,		)

             UpperCAmelCase__	:   str												=	image_classifier(
                 [
                     '''http://images.cocodataset.org/val2017/000000039769.jpg''',
                     '''http://images.cocodataset.org/val2017/000000039769.jpg''',
                 ]  ,		top_k=2  ,		)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[
                     [{'''label''': '''LABEL_1''', '''score''': 0.5_74}, {'''label''': '''LABEL_0''', '''score''': 0.4_26}],
                     [{'''label''': '''LABEL_1''', '''score''': 0.5_74}, {'''label''': '''LABEL_0''', '''score''': 0.4_26}],
                 ]  ,		)




      @require_tf
      def 							lowerCamelCase     (					self						):
             UpperCAmelCase__	:   Optional[Any]												=	'''hf-internal-testing/tiny-random-vit'''
             UpperCAmelCase__	:   Optional[int]												=	pipeline('''image-classification'''  ,		model=_UpperCAmelCase  ,		framework='''tf'''						)

             UpperCAmelCase__	:   List[Any]												=	image_classifier('''http://images.cocodataset.org/val2017/000000039769.jpg'''						)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[{'''label''': '''LABEL_1''', '''score''': 0.5_74}, {'''label''': '''LABEL_0''', '''score''': 0.4_26}]  ,		)

             UpperCAmelCase__	:   Union[str, Any]												=	image_classifier(
                 [
                     '''http://images.cocodataset.org/val2017/000000039769.jpg''',
                     '''http://images.cocodataset.org/val2017/000000039769.jpg''',
                 ]  ,		top_k=2  ,		)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[
                     [{'''label''': '''LABEL_1''', '''score''': 0.5_74}, {'''label''': '''LABEL_0''', '''score''': 0.4_26}],
                     [{'''label''': '''LABEL_1''', '''score''': 0.5_74}, {'''label''': '''LABEL_0''', '''score''': 0.4_26}],
                 ]  ,		)




      def 							lowerCamelCase     (					self						):
             UpperCAmelCase__	:   str												=	PreTrainedTokenizer()

             # Assert that the pipeline can be initialized with a feature extractor that is not in any mapping
             UpperCAmelCase__	:   List[str]												=	pipeline(
                 '''image-classification'''  ,		model='''hf-internal-testing/tiny-random-vit'''  ,		tokenizer=_UpperCAmelCase						)

             self.assertIs(image_classifier.tokenizer  ,		_UpperCAmelCase						)




      @slow
      @require_torch
      def 							lowerCamelCase     (					self						):
             # Perceiver is not tested by `run_pipeline_test` properly.
             # That is because the type of feature_extractor and model preprocessor need to be kept
             # in sync, which is not the case in the current design
             UpperCAmelCase__	:   str												=	pipeline('''image-classification'''  ,		model='''deepmind/vision-perceiver-conv'''						)
             UpperCAmelCase__	:   List[Any]												=	image_classifier('''http://images.cocodataset.org/val2017/000000039769.jpg'''						)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[
                     {'''score''': 0.43_85, '''label''': '''tabby, tabby cat'''},
                     {'''score''': 0.3_21, '''label''': '''tiger cat'''},
                     {'''score''': 0.05_02, '''label''': '''Egyptian cat'''},
                     {'''score''': 0.01_37, '''label''': '''crib, cot'''},
                     {'''score''': 0.0_07, '''label''': '''radiator'''},
                 ]  ,		)

             UpperCAmelCase__	:   Optional[int]												=	pipeline('''image-classification'''  ,		model='''deepmind/vision-perceiver-fourier'''						)
             UpperCAmelCase__	:   Optional[int]												=	image_classifier('''http://images.cocodataset.org/val2017/000000039769.jpg'''						)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[
                     {'''score''': 0.56_58, '''label''': '''tabby, tabby cat'''},
                     {'''score''': 0.13_09, '''label''': '''tiger cat'''},
                     {'''score''': 0.07_22, '''label''': '''Egyptian cat'''},
                     {'''score''': 0.07_07, '''label''': '''remote control, remote'''},
                     {'''score''': 0.00_82, '''label''': '''computer keyboard, keypad'''},
                 ]  ,		)

             UpperCAmelCase__	:   List[Any]												=	pipeline('''image-classification'''  ,		model='''deepmind/vision-perceiver-learned'''						)
             UpperCAmelCase__	:   int												=	image_classifier('''http://images.cocodataset.org/val2017/000000039769.jpg'''						)
             self.assertEqual(
                 nested_simplify(_UpperCAmelCase  ,		decimals=4						)  ,		[
                     {'''score''': 0.30_22, '''label''': '''tabby, tabby cat'''},
                     {'''score''': 0.23_62, '''label''': '''Egyptian cat'''},
                     {'''score''': 0.18_56, '''label''': '''tiger cat'''},
                     {'''score''': 0.03_24, '''label''': '''remote control, remote'''},
                     {'''score''': 0.00_96, '''label''': '''quilt, comforter, comfort, puff'''},
                 ]  ,		)







'''simple docstring'''







from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


UpperCamelCase_					=				{
    "configuration_flava": [
        "FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "FlavaConfig",
        "FlavaImageCodebookConfig",
        "FlavaImageConfig",
        "FlavaMultimodalConfig",
        "FlavaTextConfig",
    ],
}

try:
  if not is_vision_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCamelCase_					=				["FlavaFeatureExtractor"]
  UpperCamelCase_					=				["FlavaImageProcessor"]
  UpperCamelCase_					=				["FlavaProcessor"]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCamelCase_					=				[
      "FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST",
      "FlavaForPreTraining",
      "FlavaImageCodebook",
      "FlavaImageModel",
      "FlavaModel",
      "FlavaMultimodalModel",
      "FlavaPreTrainedModel",
      "FlavaTextModel",
  ]

if TYPE_CHECKING:
  from .configuration_flava import (
      FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP,
      FlavaConfig,
      FlavaImageCodebookConfig,
      FlavaImageConfig,
      FlavaMultimodalConfig,
      FlavaTextConfig,
  )

  try:
    if not is_vision_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .feature_extraction_flava import FlavaFeatureExtractor
    from .image_processing_flava import FlavaImageProcessor
    from .processing_flava import FlavaProcessor

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_flava import (
        FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST,
        FlavaForPreTraining,
        FlavaImageCodebook,
        FlavaImageModel,
        FlavaModel,
        FlavaMultimodalModel,
        FlavaPreTrainedModel,
        FlavaTextModel,
    )

else:
  import sys

  UpperCamelCase_					=				_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)