






from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


UpperCamelCase							       =    {
    """configuration_megatron_bert""": ["""MEGATRON_BERT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """MegatronBertConfig"""],
}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     UpperCamelCase							       =    [
         """MEGATRON_BERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
         """MegatronBertForCausalLM""",
         """MegatronBertForMaskedLM""",
         """MegatronBertForMultipleChoice""",
         """MegatronBertForNextSentencePrediction""",
         """MegatronBertForPreTraining""",
         """MegatronBertForQuestionAnswering""",
         """MegatronBertForSequenceClassification""",
         """MegatronBertForTokenClassification""",
         """MegatronBertModel""",
         """MegatronBertPreTrainedModel""",
     ]

if TYPE_CHECKING:
     from .configuration_megatron_bert import MEGATRON_BERT_PRETRAINED_CONFIG_ARCHIVE_MAP, MegatronBertConfig

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_megatron_bert import (
              MEGATRON_BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
              MegatronBertForCausalLM,
              MegatronBertForMaskedLM,
              MegatronBertForMultipleChoice,
              MegatronBertForNextSentencePrediction,
              MegatronBertForPreTraining,
              MegatronBertForQuestionAnswering,
              MegatronBertForSequenceClassification,
              MegatronBertForTokenClassification,
              MegatronBertModel,
              MegatronBertPreTrainedModel,
          )

else:
     import sys

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










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

from ..models.auto import AutoModelForVisionaSeq
from ..utils import requires_backends
from .base import PipelineTool


if TYPE_CHECKING:
     from PIL import Image




class    lowercase_    (_UpperCAmelCase     ):
      A__	:		str       			=				'''Salesforce/blip-image-captioning-base'''
      A__	:		Optional[int]       			=				(
          '''This is a tool that generates a description of an image. It takes an input named `image` which should be the '''
          '''image to caption, and returns a text that contains the description in English.'''
      )
      A__	:		str       			=				'''image_captioner'''
      A__	:		Tuple       			=				AutoModelForVisionaSeq

      A__	:		Tuple       			=				['''image''']
      A__	:		List[Any]       			=				['''text''']






      def __init__(    self     ,     *a_     ,     **a_	)	->Union[str, Any]:







        '''simple docstring'''


        requires_backends(self     ,     ["vision"]	)
        super().__init__(*a_     ,     **a_	)






      def 			lowerCamelCase__    (    self     ,     a_	)	->Union[str, Any]:







        '''simple docstring'''


        return self.pre_processor(images=a_     ,     return_tensors="pt"	)






      def 			lowerCamelCase__    (    self     ,     a_	)	->List[Any]:







        '''simple docstring'''


        return self.model.generate(**a_	)






      def 			lowerCamelCase__    (    self     ,     a_	)	->Tuple:







        '''simple docstring'''


        return self.pre_processor.batch_decode(a_     ,     skip_special_tokens=a_	)[0].strip()


