





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

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





class lowerCamelCase						(a__					):
  _lowercase  :	Dict       					=				"""facebook/bart-large-mnli"""
  _lowercase  :	Union[str, Any]       					=				(
      """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."""
  )
  _lowercase  :	Optional[Any]       					=				"""text_classifier"""
  _lowercase  :	Dict       					=				AutoTokenizer
  _lowercase  :	Dict       					=				AutoModelForSequenceClassification

  _lowercase  :	str       					=				["""text""", ["""text"""]]
  _lowercase  :	Optional[int]       					=				["""text"""]







  def 				UpperCAmelCase_				(		self		)		->						int:






        """simple docstring"""





        super().setup()
        _snake_case		:	Dict					     =     self.model.config
        _snake_case		:	Union[str, Any]					     =     -1
        for idx, label in config.idalabel.items():
              if label.lower().startswith('''entail'''		):
                    _snake_case		:	List[Any]					     =     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 				UpperCAmelCase_				(		self     ,     lowercase__     ,     lowercase__		)		->						Any:






        """simple docstring"""





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







  def 				UpperCAmelCase_				(		self     ,     lowercase__		)		->						Tuple:






        """simple docstring"""





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









'''simple docstring'''

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


UpperCAmelCase					:		int		=							{
    'configuration_pegasus_x': ['PEGASUS_X_PRETRAINED_CONFIG_ARCHIVE_MAP', 'PegasusXConfig'],
}

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   UpperCAmelCase					:		Union[str, Any]		=							[
       'PEGASUS_X_PRETRAINED_MODEL_ARCHIVE_LIST',
       'PegasusXForConditionalGeneration',
       'PegasusXModel',
       'PegasusXPreTrainedModel',
   ]


if TYPE_CHECKING:
   from .configuration_pegasus_x import PEGASUS_X_PRETRAINED_CONFIG_ARCHIVE_MAP, PegasusXConfig

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_pegasus_x import (
          PEGASUS_X_PRETRAINED_MODEL_ARCHIVE_LIST,
          PegasusXForConditionalGeneration,
          PegasusXModel,
          PegasusXPreTrainedModel,
      )


else:
   import sys

   UpperCAmelCase					:		Dict		=							_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)


