


"""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 	lowercase__				(					A_				):
   __UpperCAmelCase							       =					'''facebook/bart-large-mnli'''
   __UpperCAmelCase							       =					(
       '''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							       =					'''text_classifier'''
   __UpperCAmelCase							       =					AutoTokenizer
   __UpperCAmelCase							       =					AutoModelForSequenceClassification

   __UpperCAmelCase							       =					['''text''', ['''text''']]
   __UpperCAmelCase							       =					['''text''']





   def 		UpperCamelCase_  (							self)  ->  Union[str, Any]:
      super().setup()
      _lowerCamelCase	:					List[Any]   =		self.model.config
      _lowerCamelCase	:					Union[str, Any]   =		-1
      for idx, label in config.idalabel.items():
         if label.lower().startswith("""entail"""):
            _lowerCamelCase	:					Tuple   =		int(SCREAMING_SNAKE_CASE)
      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      ,   SCREAMING_SNAKE_CASE      ,   SCREAMING_SNAKE_CASE)  ->  Any:
      _lowerCamelCase	:					Union[str, Any]   =		labels
      return self.pre_processor(
          [text] * len(SCREAMING_SNAKE_CASE)      ,   [F'This example is {label}' for label in labels]      ,   return_tensors="""pt"""      ,   padding="""max_length"""      ,   )





   def 		UpperCamelCase_  (							self      ,   SCREAMING_SNAKE_CASE)  ->  Any:
      _lowerCamelCase	:					int   =		outputs.logits
      _lowerCamelCase	:					List[Any]   =		torch.argmax(logits[:, 2]).item()
      return self._labels[label_id]





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__a	 =      {
    """configuration_pegasus_x""": ["""PEGASUS_X_PRETRAINED_CONFIG_ARCHIVE_MAP""", """PegasusXConfig"""],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 __a	 =      [
     """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

 __a	 =      _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)



