
# 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.
import torch

from ..models.auto import AutoModelForSequenceClassification, AutoTokenizer
from .base import PipelineTool




class    SCREAMING_SNAKE_CASE__     (	UpperCAmelCase					):





	'''simple docstring'''



	_UpperCAmelCase       :		List[Any]       =					"facebook/bart-large-mnli"
	_UpperCAmelCase       :		Tuple       =					(
	    "This is a tool that classifies an English text using provided labels. It takes two inputs: `text`, which "
	    "should be the text to classify, and `labels`, which should be the list of labels to use for classification. "
	    "It returns the most likely label in the list of provided `labels` for the input text."
	)
	_UpperCAmelCase       :		Tuple       =					"text_classifier"
	_UpperCAmelCase       :		str       =					AutoTokenizer
	_UpperCAmelCase       :		Optional[int]       =					AutoModelForSequenceClassification

	_UpperCAmelCase       :		Any       =					["text", ["text"]]
	_UpperCAmelCase       :		List[Any]       =					["text"]



	def  A							(  self	:    Optional[Any]	):


				'''simple docstring'''


				super().setup()
				_snake_case		=			self.model.config
				_snake_case		=			-1
				for idx, label in config.idalabel.items():
							if label.lower().startswith('entail'	):
										_snake_case		=			int(lowercase	)
				if self.entailment_id == -1:
							raise ValueError('Could not determine the entailment ID from the model config, please pass it at init.'	)



	def  A							(  self	:    List[Any]			,  lowercase	:    str			,  lowercase	:    int	):


				'''simple docstring'''


				_snake_case		=			labels
				return self.pre_processor(
				    [text] * len(lowercase	)			,  [f'''This example is {label}''' for label in labels]			,  return_tensors='pt'			,  padding='max_length'			,  )





	def  A							(  self	:    Dict			,  lowercase	:    str	):


				'''simple docstring'''


				_snake_case		=			outputs.logits
				_snake_case		=			torch.argmax(logits[:, 2]	).item()
				return self._labels[label_id]

import warnings

from ...utils import logging
from .image_processing_chinese_clip import ChineseCLIPImageProcessor


_lowerCamelCase       :				Dict       =			logging.get_logger(__name__)




class    SCREAMING_SNAKE_CASE__     (	UpperCAmelCase					):





	'''simple docstring'''



	def __init__(  self	:    Tuple			,  *lowercase	:    Optional[int]			,  **lowercase	:    Any	):


				'''simple docstring'''


				warnings.warn(
				    'The class ChineseCLIPFeatureExtractor is deprecated and will be removed in version 5 of Transformers.'
				    ' Please use ChineseCLIPImageProcessor instead.'			,  lowercase			,  )
				super().__init__(*lowercase			,  **lowercase	)