# 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 			UpperCAmelCase__    (		snake_case					):



  """simple docstring"""






  lowerCAmelCase__		:	Optional[int]    		= 'Salesforce/blip-image-captioning-base'
  lowerCAmelCase__		:	Dict    		= (
      '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.'
  )
  lowerCAmelCase__		:	Optional[Any]    		= 'image_captioner'
  lowerCAmelCase__		:	List[str]    		= AutoModelForVisionaSeq

  lowerCAmelCase__		:	int    		= ['image']
  lowerCAmelCase__		:	Dict    		= ['text']






  def __init__(				self:			Optional[Any]				,				*__lowerCAmelCase:			Dict				,				**__lowerCAmelCase:			Any   ) -> Optional[int]:




    '''simple docstring'''




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






  def 	_UpperCAmelCase				(				self:			Tuple				,				__lowerCAmelCase:			"Image"   ) -> Optional[int]:




    '''simple docstring'''




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






  def 	_UpperCAmelCase				(				self:			Optional[Any]				,				__lowerCAmelCase:			Union[str, Any]   ) -> int:




    '''simple docstring'''




    return self.model.generate(**__lowerCAmelCase   )






  def 	_UpperCAmelCase				(				self:			Tuple				,				__lowerCAmelCase:			Optional[int]   ) -> Any:




    '''simple docstring'''




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




def       __lowerCAmelCase      (						A_   : str					)    ->  bool:
  if not all(x.isalpha() for x in string					):
    raise ValueError("String must only contain alphabetic characters."					)

  __UpperCAmelCase						    =       sorted(string.lower()					)
  return len(A_					) == len(set(A_					)					)


if __name__ == "__main__":
       a_							=      input("""Enter a string """).strip()

       a_							=      is_isogram(input_str)
       print(F"{input_str} is {'an' if isogram else 'not an'} isogram.")



