
"""simple docstring"""


# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

import torch

from ..models.auto import AutoModelForVisualQuestionAnswering, AutoProcessor
from ..utils import requires_backends
from .base import PipelineTool


if TYPE_CHECKING:
		from PIL import Image







class 					lowerCAmelCase_					(   _lowercase     ):



						'''simple docstring'''


						_lowerCamelCase:     Optional[Any]   =     '''dandelin/vilt-b32-finetuned-vqa'''
						_lowerCamelCase:     int   =     (
						    '''This is a tool that answers a question about an image. It takes an input named `image` which should be the '''
						    '''image containing the information, as well as a `question` which should be the question in English. It '''
						    '''returns a text that is the answer to the question.'''
						)
						_lowerCamelCase:     str   =     '''image_qa'''
						_lowerCamelCase:     int   =     AutoProcessor
						_lowerCamelCase:     Any   =     AutoModelForVisualQuestionAnswering

						_lowerCamelCase:     List[Any]   =     ['''image''', '''text''']
						_lowerCamelCase:     Union[str, Any]   =     ['''text''']


						def __init__(			self  :   Dict	,*A_  :   int	,**A_  :   Optional[int]   )  -> Optional[int]:
							requires_backends(self	,['vision']   )
							super().__init__(*A_	,**A_   )


						def     _SCREAMING_SNAKE_CASE   (			self  :   Union[str, Any]	,A_  :   "Image"	,A_  :   str   )  -> int:
							return self.pre_processor(A_	,A_	,return_tensors='pt'   )


						def     _SCREAMING_SNAKE_CASE   (			self  :   Union[str, Any]	,A_  :   Optional[Any]   )  -> Dict:
							with torch.no_grad():
								return self.model(**A_   ).logits




						def     _SCREAMING_SNAKE_CASE   (			self  :   List[str]	,A_  :   Optional[int]   )  -> Tuple:
							A     = outputs.argmax(-1   ).item()
							return self.model.config.idalabel[idx]

"""simple docstring"""


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_lowercase				 =					{
    '''configuration_xlm_roberta_xl''': [
        '''XLM_ROBERTA_XL_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''XLMRobertaXLConfig''',
        '''XLMRobertaXLOnnxConfig''',
    ],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowercase				 =					[
		    '''XLM_ROBERTA_XL_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''XLMRobertaXLForCausalLM''',
		    '''XLMRobertaXLForMaskedLM''',
		    '''XLMRobertaXLForMultipleChoice''',
		    '''XLMRobertaXLForQuestionAnswering''',
		    '''XLMRobertaXLForSequenceClassification''',
		    '''XLMRobertaXLForTokenClassification''',
		    '''XLMRobertaXLModel''',
		    '''XLMRobertaXLPreTrainedModel''',
		]

if TYPE_CHECKING:
		from .configuration_xlm_roberta_xl import (
		    XLM_ROBERTA_XL_PRETRAINED_CONFIG_ARCHIVE_MAP,
		    XLMRobertaXLConfig,
		    XLMRobertaXLOnnxConfig,
		)

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_xlm_roberta_xl import (
				    XLM_ROBERTA_XL_PRETRAINED_MODEL_ARCHIVE_LIST,
				    XLMRobertaXLForCausalLM,
				    XLMRobertaXLForMaskedLM,
				    XLMRobertaXLForMultipleChoice,
				    XLMRobertaXLForQuestionAnswering,
				    XLMRobertaXLForSequenceClassification,
				    XLMRobertaXLForTokenClassification,
				    XLMRobertaXLModel,
				    XLMRobertaXLPreTrainedModel,
				)

else:
		import sys

		_lowercase				 =					_LazyModule(__name__, globals()['''__file__'''], _import_structure)