





# 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 	A_       (a_			):
	UpperCAmelCase__					=			'''Salesforce/blip-image-captioning-base'''
	UpperCAmelCase__					=			(
	    '''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.'''
	)
	UpperCAmelCase__					=			'''image_captioner'''
	UpperCAmelCase__					=			AutoModelForVisionaSeq

	UpperCAmelCase__					=			['''image''']
	UpperCAmelCase__					=			['''text''']
	def __init__(    self							,					*_A							,					**_A		):






				'''simple docstring'''







				requires_backends(self							,					['''vision''']		)
				super().__init__(*_A							,					**_A		)
	def      _lowercase				(    self							,					_A		):






				'''simple docstring'''







				return self.pre_processor(images=_A							,					return_tensors='''pt'''		)
	def      _lowercase				(    self							,					_A		):






				'''simple docstring'''







				return self.model.generate(**_A		)







	def      _lowercase				(    self							,					_A		):






				'''simple docstring'''







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










def 						__SCREAMING_SNAKE_CASE  (				UpperCamelCase__			,			UpperCamelCase__			,			UpperCamelCase__ )  ->				int:







			'''simple docstring'''

			if exponent == 1:
						return base
			if exponent % 2 == 0:
						UpperCAmelCase   		=				_modexpt(UpperCamelCase__			,			exponent // 2			,			UpperCamelCase__ ) % modulo_value
						return (x * x) % modulo_value
			else:
						return (base * _modexpt(UpperCamelCase__			,			exponent - 1			,			UpperCamelCase__ )) % modulo_value





def 						__SCREAMING_SNAKE_CASE  (				UpperCamelCase__ = 1777			,			UpperCamelCase__ = 1855			,			UpperCamelCase__ = 8 )  ->				int:







			'''simple docstring'''

			UpperCAmelCase   		=				base
			for _ in range(1			,			UpperCamelCase__ ):
						UpperCAmelCase   		=				_modexpt(UpperCamelCase__			,			UpperCamelCase__			,			10**digits )

			return result


if __name__ == "__main__":
				print(F'{solution() = }')



