





'''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 				__SCREAMING_SNAKE_CASE  (_UpperCAmelCase      ):






				"""simple docstring"""







				__a            ='Salesforce/blip-image-captioning-base'
				__a            =(
				    '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            ='image_captioner'
				__a            =AutoModelForVisionaSeq

				__a            =['image']
				__a            =['text']




				def __init__(  self     :					List[str]					,				*__a     :					int					,				**__a     :					Optional[int]					):
								requires_backends(self					,				["vision"]					)
								super().__init__(*A_					,				**A_					)




				def   UpperCamelCase__   (  self     :					int					,				__a     :					Optional[Any]					):
								return self.pre_processor(images=A_					,				return_tensors="pt"					)




				def   UpperCamelCase__   (  self     :					Union[str, Any]					,				__a     :					Any					):
								return self.model.generate(**A_					)




				def   UpperCamelCase__   (  self     :					Optional[Any]					,				__a     :					Optional[int]					):
								return self.pre_processor.batch_decode(A_					,				skip_special_tokens=A_					)[0].strip()



def 		_lowercase (     lowercase__   ,	lowercase__						):
      if a < 0 or b < 0:
            raise ValueError('''the value of both inputs must be positive'''						)
      __lowerCAmelCase					:						int					=					str(bin(lowercase__						)						)[2:]  # remove the leading "0b"
      __lowerCAmelCase					:						Any					=					str(bin(lowercase__						)						)[2:]
      __lowerCAmelCase					:						List[str]					=					max(len(lowercase__						)   ,	len(lowercase__						)						)
      return "0b" + "".join(
          str(int('''1''' in (char_a, char_b)						)						)
          for char_a, char_b in zip(a_binary.zfill(lowercase__						)   ,	b_binary.zfill(lowercase__						)						)						)


if __name__ == "__main__":
 import doctest

 doctest.testmod()


