





from collections import OrderedDict
from typing import Mapping

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


_lowercase		:     Optional[int] 					=logging.get_logger(__name__)

_lowercase		:     List[str] 					={
    'nghuyong/ernie-1.0-base-zh': 'https://huggingface.co/nghuyong/ernie-1.0-base-zh/resolve/main/config.json',
    'nghuyong/ernie-2.0-base-en': 'https://huggingface.co/nghuyong/ernie-2.0-base-en/resolve/main/config.json',
    'nghuyong/ernie-2.0-large-en': 'https://huggingface.co/nghuyong/ernie-2.0-large-en/resolve/main/config.json',
    'nghuyong/ernie-3.0-base-zh': 'https://huggingface.co/nghuyong/ernie-3.0-base-zh/resolve/main/config.json',
    'nghuyong/ernie-3.0-medium-zh': 'https://huggingface.co/nghuyong/ernie-3.0-medium-zh/resolve/main/config.json',
    'nghuyong/ernie-3.0-mini-zh': 'https://huggingface.co/nghuyong/ernie-3.0-mini-zh/resolve/main/config.json',
    'nghuyong/ernie-3.0-micro-zh': 'https://huggingface.co/nghuyong/ernie-3.0-micro-zh/resolve/main/config.json',
    'nghuyong/ernie-3.0-nano-zh': 'https://huggingface.co/nghuyong/ernie-3.0-nano-zh/resolve/main/config.json',
    'nghuyong/ernie-gram-zh': 'https://huggingface.co/nghuyong/ernie-gram-zh/resolve/main/config.json',
    'nghuyong/ernie-health-zh': 'https://huggingface.co/nghuyong/ernie-health-zh/resolve/main/config.json',
}






class 	UpperCamelCase_     (     lowercase_       ):
					_a			:	List[str]							=				"""ernie"""



					def __init__(		self    :    List[Any]					,			lowerCamelCase    :    List[str]=3_05_22					,			lowerCamelCase    :    Dict=7_68					,			lowerCamelCase    :    List[str]=12					,			lowerCamelCase    :    Tuple=12					,			lowerCamelCase    :    Dict=30_72					,			lowerCamelCase    :    Tuple="gelu"					,			lowerCamelCase    :    Any=0.1					,			lowerCamelCase    :    Optional[Any]=0.1					,			lowerCamelCase    :    Union[str, Any]=5_12					,			lowerCamelCase    :    int=2					,			lowerCamelCase    :    Optional[int]=3					,			lowerCamelCase    :    Any=False					,			lowerCamelCase    :    List[str]=0.02					,			lowerCamelCase    :    int=1E-12					,			lowerCamelCase    :    List[str]=0					,			lowerCamelCase    :    List[Any]="absolute"					,			lowerCamelCase    :    int=True					,			lowerCamelCase    :    List[Any]=None					,			**lowerCamelCase    :    List[str]					,			):
							super().__init__(pad_token_id=lowerCamelCase					,			**lowerCamelCase	)

							lowerCamelCase_  :    Dict   	=			vocab_size
							lowerCamelCase_  :    Tuple   	=			hidden_size
							lowerCamelCase_  :    Union[str, Any]   	=			num_hidden_layers
							lowerCamelCase_  :    Union[str, Any]   	=			num_attention_heads
							lowerCamelCase_  :    Any   	=			hidden_act
							lowerCamelCase_  :    int   	=			intermediate_size
							lowerCamelCase_  :    Tuple   	=			hidden_dropout_prob
							lowerCamelCase_  :    Optional[Any]   	=			attention_probs_dropout_prob
							lowerCamelCase_  :    Optional[int]   	=			max_position_embeddings
							lowerCamelCase_  :    int   	=			type_vocab_size
							lowerCamelCase_  :    Optional[int]   	=			task_type_vocab_size
							lowerCamelCase_  :    Dict   	=			use_task_id
							lowerCamelCase_  :    Dict   	=			initializer_range
							lowerCamelCase_  :    Optional[Any]   	=			layer_norm_eps
							lowerCamelCase_  :    int   	=			position_embedding_type
							lowerCamelCase_  :    Tuple   	=			use_cache
							lowerCamelCase_  :    Any   	=			classifier_dropout






class 	UpperCamelCase_     (     lowercase_       ):



					@property
					def      __a    (		self    :    Dict	):







							if self.task == "multiple-choice":
									lowerCamelCase_  :    Tuple   	=			{0: 'batch', 1: 'choice', 2: 'sequence'}
							else:
									lowerCamelCase_  :    str   	=			{0: 'batch', 1: 'sequence'}
							return OrderedDict(
							    [
							        ('input_ids', dynamic_axis),
							        ('attention_mask', dynamic_axis),
							        ('token_type_ids', dynamic_axis),
							        ('task_type_ids', dynamic_axis),
							    ]	)







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:
		_lowercase		:     Dict 					=False


if is_vision_available():
		from PIL import Image
else:






		class 	UpperCamelCase_     :



							@staticmethod
							def      __a    (		*lowerCamelCase    :    Any					,			**lowerCamelCase    :    List[Any]	):
									pass






@is_pipeline_test
@require_vision
class 	UpperCamelCase_     (     unittest.TestCase       ):
					_a			:	int							=				MODEL_FOR_VISION_2_SEQ_MAPPING
					_a			:	int							=				TF_MODEL_FOR_VISION_2_SEQ_MAPPING



					def      __a    (		self    :    int					,			lowerCamelCase    :    Union[str, Any]					,			lowerCamelCase    :    Optional[int]					,			lowerCamelCase    :    Union[str, Any]	):
							lowerCamelCase_  :    List[str]   	=			pipeline('image-to-text'					,			model=lowerCamelCase					,			tokenizer=lowerCamelCase					,			image_processor=lowerCamelCase	)
							lowerCamelCase_  :    str   	=			[
							    Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'	),
							    './tests/fixtures/tests_samples/COCO/000000039769.png',
							]
							return pipe, examples



					def      __a    (		self    :    List[Any]					,			lowerCamelCase    :    Any					,			lowerCamelCase    :    List[str]	):
							lowerCamelCase_  :    str   	=			pipe(lowerCamelCase	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        [{'generated_text': ANY(lowerCamelCase	)}],
							        [{'generated_text': ANY(lowerCamelCase	)}],
							    ]					,			)



					@require_tf
					def      __a    (		self    :    Union[str, Any]	):
							lowerCamelCase_  :    Tuple   	=			pipeline('image-to-text'					,			model='hf-internal-testing/tiny-random-vit-gpt2'					,			framework='tf'	)
							lowerCamelCase_  :    Optional[int]   	=			'./tests/fixtures/tests_samples/COCO/000000039769.png'

							lowerCamelCase_  :    Optional[int]   	=			pipe(lowerCamelCase	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        {
							            'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
							        },
							    ]					,			)

							lowerCamelCase_  :    List[Any]   	=			pipe([image, image]	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        [
							            {
							                'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
							            }
							        ],
							        [
							            {
							                'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
							            }
							        ],
							    ]					,			)

							lowerCamelCase_  :    str   	=			pipe(lowerCamelCase					,			max_new_tokens=1	)
							self.assertEqual(
							    lowerCamelCase					,			[{'generated_text': 'growth'}]					,			)



					@require_torch
					def      __a    (		self    :    Tuple	):
							lowerCamelCase_  :    Union[str, Any]   	=			pipeline('image-to-text'					,			model='hf-internal-testing/tiny-random-vit-gpt2'	)
							lowerCamelCase_  :    Any   	=			'./tests/fixtures/tests_samples/COCO/000000039769.png'

							lowerCamelCase_  :    int   	=			pipe(lowerCamelCase	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        {
							            'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
							        },
							    ]					,			)

							lowerCamelCase_  :    Tuple   	=			pipe([image, image]	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        [
							            {
							                'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
							            }
							        ],
							        [
							            {
							                'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
							            }
							        ],
							    ]					,			)



					@require_torch
					def      __a    (		self    :    Dict	):
							lowerCamelCase_  :    Any   	=			pipeline('image-to-text'					,			model='hf-internal-testing/tiny-random-BlipForConditionalGeneration'	)
							lowerCamelCase_  :    List[Any]   	=			'./tests/fixtures/tests_samples/COCO/000000039769.png'
							lowerCamelCase_  :    List[Any]   	=			'a photo of'

							lowerCamelCase_  :    Dict   	=			pipe(lowerCamelCase					,			prompt=lowerCamelCase	)
							self.assertTrue(outputs[0]['generated_text'].startswith(lowerCamelCase	)	)



					@slow
					@require_torch
					def      __a    (		self    :    Union[str, Any]	):
							lowerCamelCase_  :    List[str]   	=			pipeline('image-to-text'					,			model='ydshieh/vit-gpt2-coco-en'	)
							lowerCamelCase_  :    Any   	=			'./tests/fixtures/tests_samples/COCO/000000039769.png'

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

							lowerCamelCase_  :    Union[str, Any]   	=			pipe([image, image]	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        [{'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      __a    (		self    :    List[Any]	):
							lowerCamelCase_  :    int   	=			pipeline('image-to-text'					,			model='Salesforce/blip-image-captioning-base'	)
							lowerCamelCase_  :    Tuple   	=			'https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png'
							lowerCamelCase_  :    List[Any]   	=			Image.open(requests.get(lowerCamelCase					,			stream=lowerCamelCase	).raw	)

							lowerCamelCase_  :    Optional[Any]   	=			pipe(lowerCamelCase	)
							self.assertEqual(lowerCamelCase					,			[{'generated_text': 'a pink pokemon pokemon with a blue shirt and a blue shirt'}]	)



					@slow
					@require_torch
					def      __a    (		self    :    List[str]	):
							lowerCamelCase_  :    Optional[Any]   	=			pipeline('image-to-text'					,			model='microsoft/git-base-coco'	)
							lowerCamelCase_  :    str   	=			'https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png'
							lowerCamelCase_  :    Dict   	=			Image.open(requests.get(lowerCamelCase					,			stream=lowerCamelCase	).raw	)

							lowerCamelCase_  :    Optional[int]   	=			pipe(lowerCamelCase	)
							self.assertEqual(lowerCamelCase					,			[{'generated_text': 'a cartoon of a purple character.'}]	)



					@slow
					@require_torch
					def      __a    (		self    :    List[str]	):
							lowerCamelCase_  :    List[Any]   	=			pipeline('image-to-text'					,			model='Salesforce/blip-image-captioning-base'	)
							lowerCamelCase_  :    int   	=			'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
							lowerCamelCase_  :    List[str]   	=			Image.open(requests.get(lowerCamelCase					,			stream=lowerCamelCase	).raw	)

							lowerCamelCase_  :    int   	=			'a photography of'

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

							with self.assertRaises(lowerCamelCase	):
									lowerCamelCase_  :    Union[str, Any]   	=			pipe([image, image]					,			prompt=[prompt, prompt]	)



					@slow
					@require_torch
					def      __a    (		self    :    int	):
							lowerCamelCase_  :    Optional[int]   	=			pipeline('image-to-text'					,			model='microsoft/git-base-coco'	)
							lowerCamelCase_  :    int   	=			'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
							lowerCamelCase_  :    Optional[Any]   	=			Image.open(requests.get(lowerCamelCase					,			stream=lowerCamelCase	).raw	)

							lowerCamelCase_  :    Optional[int]   	=			'a photo of a'

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

							with self.assertRaises(lowerCamelCase	):
									lowerCamelCase_  :    List[Any]   	=			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      __a    (		self    :    Any	):
							lowerCamelCase_  :    Union[str, Any]   	=			pipeline('image-to-text'					,			model='google/pix2struct-ai2d-base'	)
							lowerCamelCase_  :    List[str]   	=			'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
							lowerCamelCase_  :    Tuple   	=			Image.open(requests.get(lowerCamelCase					,			stream=lowerCamelCase	).raw	)

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

							lowerCamelCase_  :    Union[str, Any]   	=			pipe(lowerCamelCase					,			prompt=lowerCamelCase	)
							self.assertEqual(lowerCamelCase					,			[{'generated_text': 'ash cloud'}]	)

							with self.assertRaises(lowerCamelCase	):
									lowerCamelCase_  :    Optional[Any]   	=			pipe([image, image]					,			prompt=[prompt, prompt]	)





					@slow
					@require_tf
					def      __a    (		self    :    Dict	):
							lowerCamelCase_  :    List[str]   	=			pipeline('image-to-text'					,			model='ydshieh/vit-gpt2-coco-en'					,			framework='tf'	)
							lowerCamelCase_  :    Dict   	=			'./tests/fixtures/tests_samples/COCO/000000039769.png'

							lowerCamelCase_  :    Optional[Any]   	=			pipe(lowerCamelCase	)
							self.assertEqual(lowerCamelCase					,			[{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}]	)

							lowerCamelCase_  :    List[Any]   	=			pipe([image, image]	)
							self.assertEqual(
							    lowerCamelCase					,			[
							        [{'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 '}],
							    ]					,			)
