


'''simple docstring'''

import unittest

import requests

from transformers import MODEL_FOR_VISION_2_SEQ_MAPPING, TF_MODEL_FOR_VISION_2_SEQ_MAPPING, is_vision_available
from transformers.pipelines import pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    is_torch_available,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_torch_available():
 from transformers.pytorch_utils import is_torch_greater_or_equal_than_1_11
else:
 lowerCamelCase							:     Dict								=			False


if is_vision_available():
 from PIL import Image
else:
 class 						__lowerCAmelCase		:





       '''simple docstring'''






       @staticmethod
       def    UpperCamelCase__	(*UpperCamelCase					:					Any     ,		**UpperCamelCase					:					List[Any]				):

              '''simple docstring'''







              pass
@is_pipeline_test
@require_vision
class 						__lowerCAmelCase		(unittest.TestCase  ):





      '''simple docstring'''






      lowerCAmelCase__      :  int						      =							MODEL_FOR_VISION_2_SEQ_MAPPING
      lowerCAmelCase__      :  int						      =							TF_MODEL_FOR_VISION_2_SEQ_MAPPING



      def    UpperCamelCase__	(self					:					int     ,		UpperCamelCase					:					Union[str, Any]     ,		UpperCamelCase					:					Optional[int]     ,		UpperCamelCase					:					Union[str, Any]				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model=UpperCamelCase     ,		tokenizer=UpperCamelCase     ,		image_processor=UpperCamelCase				)
             lowercase__       =				[
                 Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''				),
                 './tests/fixtures/tests_samples/COCO/000000039769.png',
             ]
             return pipe, examples



      def    UpperCamelCase__	(self					:					List[Any]     ,		UpperCamelCase					:					Any     ,		UpperCamelCase					:					List[str]				):

             '''simple docstring'''







             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     [{'''generated_text''': ANY(UpperCamelCase				)}],
                     [{'''generated_text''': ANY(UpperCamelCase				)}],
                 ]     ,		)



      @require_tf
      def    UpperCamelCase__	(self					:					Union[str, Any]				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''hf-internal-testing/tiny-random-vit-gpt2'''     ,		framework='''tf'''				)
             lowercase__       =				'./tests/fixtures/tests_samples/COCO/000000039769.png'

             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     {
                         '''generated_text''': '''growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'''
                     },
                 ]     ,		)

             lowercase__       =				pipe([image, image]				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     [
                         {
                             '''generated_text''': '''growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'''
                         }
                     ],
                     [
                         {
                             '''generated_text''': '''growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'''
                         }
                     ],
                 ]     ,		)

             lowercase__       =				pipe(UpperCamelCase     ,		max_new_tokens=1				)
             self.assertEqual(
                 UpperCamelCase     ,		[{'''generated_text''': '''growth'''}]     ,		)



      @require_torch
      def    UpperCamelCase__	(self					:					Tuple				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''hf-internal-testing/tiny-random-vit-gpt2'''				)
             lowercase__       =				'./tests/fixtures/tests_samples/COCO/000000039769.png'

             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     {
                         '''generated_text''': '''growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'''
                     },
                 ]     ,		)

             lowercase__       =				pipe([image, image]				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     [
                         {
                             '''generated_text''': '''growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'''
                         }
                     ],
                     [
                         {
                             '''generated_text''': '''growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'''
                         }
                     ],
                 ]     ,		)



      @require_torch
      def    UpperCamelCase__	(self					:					Dict				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''hf-internal-testing/tiny-random-BlipForConditionalGeneration'''				)
             lowercase__       =				'./tests/fixtures/tests_samples/COCO/000000039769.png'
             lowercase__       =				'a photo of'

             lowercase__       =				pipe(UpperCamelCase     ,		prompt=UpperCamelCase				)
             self.assertTrue(outputs[0]['''generated_text'''].startswith(UpperCamelCase				)				)



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

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''ydshieh/vit-gpt2-coco-en'''				)
             lowercase__       =				'./tests/fixtures/tests_samples/COCO/000000039769.png'

             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''a cat laying on a blanket next to a cat laying on a bed '''}]				)

             lowercase__       =				pipe([image, image]				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     [{'''generated_text''': '''a cat laying on a blanket next to a cat laying on a bed '''}],
                     [{'''generated_text''': '''a cat laying on a blanket next to a cat laying on a bed '''}],
                 ]     ,		)



      @slow
      @require_torch
      def    UpperCamelCase__	(self					:					List[Any]				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''Salesforce/blip-image-captioning-base'''				)
             lowercase__       =				'https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png'
             lowercase__       =				Image.open(requests.get(UpperCamelCase     ,		stream=UpperCamelCase				).raw				)

             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''a pink pokemon pokemon with a blue shirt and a blue shirt'''}]				)



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

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''microsoft/git-base-coco'''				)
             lowercase__       =				'https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png'
             lowercase__       =				Image.open(requests.get(UpperCamelCase     ,		stream=UpperCamelCase				).raw				)

             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''a cartoon of a purple character.'''}]				)



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

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''Salesforce/blip-image-captioning-base'''				)
             lowercase__       =				'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
             lowercase__       =				Image.open(requests.get(UpperCamelCase     ,		stream=UpperCamelCase				).raw				)

             lowercase__       =				'a photography of'

             lowercase__       =				pipe(UpperCamelCase     ,		prompt=UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''a photography of a volcano'''}]				)

             with self.assertRaises(UpperCamelCase				):
                    lowercase__       =				pipe([image, image]     ,		prompt=[prompt, prompt]				)



      @slow
      @require_torch
      def    UpperCamelCase__	(self					:					int				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''microsoft/git-base-coco'''				)
             lowercase__       =				'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
             lowercase__       =				Image.open(requests.get(UpperCamelCase     ,		stream=UpperCamelCase				).raw				)

             lowercase__       =				'a photo of a'

             lowercase__       =				pipe(UpperCamelCase     ,		prompt=UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''a photo of a tent with a tent and a tent in the background.'''}]				)

             with self.assertRaises(UpperCamelCase				):
                    lowercase__       =				pipe([image, image]     ,		prompt=[prompt, prompt]				)



      @unittest.skipIf(
          not is_torch_greater_or_equal_than_1_11     ,		reason='''`Pix2StructImageProcessor` requires `torch>=1.11.0`.'''				)
      @slow
      @require_torch
      def    UpperCamelCase__	(self					:					Any				):

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''google/pix2struct-ai2d-base'''				)
             lowercase__       =				'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
             lowercase__       =				Image.open(requests.get(UpperCamelCase     ,		stream=UpperCamelCase				).raw				)

             lowercase__       =				'What does the label 15 represent? (1) lava (2) core (3) tunnel (4) ash cloud'

             lowercase__       =				pipe(UpperCamelCase     ,		prompt=UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''ash cloud'''}]				)

             with self.assertRaises(UpperCamelCase				):
                    lowercase__       =				pipe([image, image]     ,		prompt=[prompt, prompt]				)






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

             '''simple docstring'''







             lowercase__       =				pipeline('''image-to-text'''     ,		model='''ydshieh/vit-gpt2-coco-en'''     ,		framework='''tf'''				)
             lowercase__       =				'./tests/fixtures/tests_samples/COCO/000000039769.png'

             lowercase__       =				pipe(UpperCamelCase				)
             self.assertEqual(UpperCamelCase     ,		[{'''generated_text''': '''a cat laying on a blanket next to a cat laying on a bed '''}]				)

             lowercase__       =				pipe([image, image]				)
             self.assertEqual(
                 UpperCamelCase     ,		[
                     [{'''generated_text''': '''a cat laying on a blanket next to a cat laying on a bed '''}],
                     [{'''generated_text''': '''a cat laying on a blanket next to a cat laying on a bed '''}],
                 ]     ,		)








'''simple docstring'''

from typing import TYPE_CHECKING

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


lowerCamelCase							:     Optional[Any]								=			{
    'configuration_mobilevitv2': [
        'MOBILEVITV2_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'MobileViTV2Config',
        'MobileViTV2OnnxConfig',
    ],
}


try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase							:     Optional[int]								=			[
     'MOBILEVITV2_PRETRAINED_MODEL_ARCHIVE_LIST',
     'MobileViTV2ForImageClassification',
     'MobileViTV2ForSemanticSegmentation',
     'MobileViTV2Model',
     'MobileViTV2PreTrainedModel',
 ]

if TYPE_CHECKING:
 from .configuration_mobilevitva import (
     MOBILEVITV2_PRETRAINED_CONFIG_ARCHIVE_MAP,
     MobileViTVaConfig,
     MobileViTVaOnnxConfig,
 )

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_mobilevitva import (
      MOBILEVITV2_PRETRAINED_MODEL_ARCHIVE_LIST,
      MobileViTVaForImageClassification,
      MobileViTVaForSemanticSegmentation,
      MobileViTVaModel,
      MobileViTVaPreTrainedModel,
  )

else:
 import sys

 lowerCamelCase							:     Dict								=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




