
'''simple docstring'''





import unittest

from transformers import (
    MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
    TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
    SummarizationPipeline,
    TFPreTrainedModel,
    pipeline,
)
from transformers.testing_utils import get_gpu_count, is_pipeline_test, require_tf, require_torch, slow, torch_device
from transformers.tokenization_utils import TruncationStrategy

from .test_pipelines_common import ANY


a__		: List[Any]  							=							-1 if torch_device == "cpu" else 0


@is_pipeline_test
class 			UpperCamelCase__	(     unittest.TestCase):
 UpperCAmelCase__     :     int    					=       MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING
 UpperCAmelCase__     :     Optional[Any]    					=       TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING






 def 						lowercase_    (      self	:int						,					_A	:Tuple						,					_A	:int						,					_A	:Tuple      )					->      List[Any]:







       '''simple docstring'''



       __A													=      SummarizationPipeline(model=_A						,					tokenizer=_A      )
       return summarizer, ["(CNN)The Palestinian Authority officially became", "Some other text"]






 def 						lowercase_    (      self	:List[Any]						,					_A	:Any						,					_A	:Optional[Any]      )					->      Optional[Any]:







       '''simple docstring'''



       __A													=      summarizer.model

       __A													=      summarizer('(CNN)The Palestinian Authority officially became'      )
       self.assertEqual(_A						,					[{'summary_text': ANY(_A      )}]      )

       __A													=      summarizer(
           '(CNN)The Palestinian Authority officially became '						,					num_beams=2						,					min_length=2						,					max_length=5						,					)
       self.assertEqual(_A						,					[{'summary_text': ANY(_A      )}]      )

       # Some models (Switch Transformers, LED, T5, LongT5, etc) can handle long sequences.
       __A													=      [
           'SwitchTransformersConfig',
           'T5Config',
           'LongT5Config',
           'LEDConfig',
           'PegasusXConfig',
           'FSMTConfig',
           'M2M100Config',
           'ProphetNetConfig',  # positional embeddings up to a fixed maximum size (otherwise clamping the values)
       ]
       if model.config.__class__.__name__ not in model_can_handle_longer_seq:
             # Too long and exception is expected.
             # For TF models, if the weights are initialized in GPU context, we won't get expected index error from
             # the embedding layer.
             if not (
                 isinstance(_A						,					_A      )
                 and get_gpu_count() > 0
                 and len(summarizer.model.trainable_weights      ) > 0
             ):
                   with self.assertRaises(_A      ):
                         __A													=      summarizer('This ' * 1_000      )
       __A													=      summarizer('This ' * 1_000						,					truncation=TruncationStrategy.ONLY_FIRST      )






 @require_torch
 def 						lowercase_    (      self	:Optional[Any]      )					->      List[Any]:







       '''simple docstring'''



       __A													=      pipeline(task='summarization'						,					model='sshleifer/tiny-mbart'						,					framework='pt'      )
       __A													=      summarizer('This is a small test'      )
       self.assertEqual(
           _A						,					[
               {
                   'summary_text': 'เข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไป'
               }
           ]						,					)






 @require_tf
 def 						lowercase_    (      self	:Optional[Any]      )					->      List[str]:







       '''simple docstring'''



       __A													=      pipeline(task='summarization'						,					model='sshleifer/tiny-mbart'						,					framework='tf'      )
       __A													=      summarizer('This is a small test'      )
       self.assertEqual(
           _A						,					[
               {
                   'summary_text': 'เข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไป'
               }
           ]						,					)






 @require_torch
 @slow
 def 						lowercase_    (      self	:Union[str, Any]      )					->      Any:







       '''simple docstring'''



       __A													=      pipeline(task='summarization'						,					device=_A      )
       __A													=      (
           ' (CNN)The Palestinian Authority officially became the 123rd member of the International Criminal Court on'
           ' Wednesday, a step that gives the court jurisdiction over alleged crimes in Palestinian territories. The'
           ' formal accession was marked with a ceremony at The Hague, in the Netherlands, where the court is based.'
           ' The Palestinians signed the ICC\'s founding Rome Statute in January, when they also accepted its'
           ' jurisdiction over alleged crimes committed "in the occupied Palestinian territory, including East'
           ' Jerusalem, since June 13, 2014." Later that month, the ICC opened a preliminary examination into the'
           ' situation in Palestinian territories, paving the way for possible war crimes investigations against'
           ' Israelis. As members of the court, Palestinians may be subject to counter-charges as well. Israel and'
           ' the United States, neither of which is an ICC member, opposed the Palestinians\' efforts to join the'
           ' body. But Palestinian Foreign Minister Riad al-Malki, speaking at Wednesday\'s ceremony, said it was a'
           ' move toward greater justice. "As Palestine formally becomes a State Party to the Rome Statute today, the'
           ' world is also a step closer to ending a long era of impunity and injustice," he said, according to an'
           ' ICC news release. "Indeed, today brings us closer to our shared goals of justice and peace." Judge'
           ' Kuniko Ozaki, a vice president of the ICC, said acceding to the treaty was just the first step for the'
           ' Palestinians. "As the Rome Statute today enters into force for the State of Palestine, Palestine'
           ' acquires all the rights as well as responsibilities that come with being a State Party to the Statute.'
           ' These are substantive commitments, which cannot be taken lightly," she said. Rights group Human Rights'
           ' Watch welcomed the development. "Governments seeking to penalize Palestine for joining the ICC should'
           ' immediately end their pressure, and countries that support universal acceptance of the court\'s treaty'
           ' should speak out to welcome its membership," said Balkees Jarrah, international justice counsel for the'
           ' group. \"What\'s objectionable is the attempts to undermine international justice, not Palestine\'s'
           ' decision to join a treaty to which over 100 countries around the world are members." In January, when'
           ' the preliminary ICC examination was opened, Israeli Prime Minister Benjamin Netanyahu described it as an'
           ' outrage, saying the court was overstepping its boundaries. The United States also said it "strongly"'
           ' disagreed with the court\'s decision. \"As we have said repeatedly, we do not believe that Palestine is a'
           ' state and therefore we do not believe that it is eligible to join the ICC," the State Department said in'
           ' a statement. It urged the warring sides to resolve their differences through direct negotiations. "We'
           ' will continue to oppose actions against Israel at the ICC as counterproductive to the cause of peace,"'
           ' it said. But the ICC begs to differ with the definition of a state for its purposes and refers to the'
           ' territories as "Palestine." While a preliminary examination is not a formal investigation, it allows the'
           ' court to review evidence and determine whether to investigate suspects on both sides. Prosecutor Fatou'
           ' Bensouda said her office would "conduct its analysis in full independence and impartiality." The war'
           ' between Israel and Hamas militants in Gaza last summer left more than 2,000 people dead. The inquiry'
           ' will include alleged war crimes committed since June. The International Criminal Court was set up in'
           ' 2002 to prosecute genocide, crimes against humanity and war crimes. CNN\'s Vasco Cotovio, Kareem Khadder'
           ' and Faith Karimi contributed to this report.'
       )
       __A													=      (
           ' The Palestinian Authority becomes the 123rd member of the International Criminal Court . The move gives'
           ' the court jurisdiction over alleged crimes in Palestinian territories . Israel and the United States'
           ' opposed the Palestinians\' efforts to join the court . Rights group Human Rights Watch welcomes the move,'
           ' says governments seeking to penalize Palestine should end pressure .'
       )
       __A													=      summarizer(_A      )
       self.assertEqual(result[0]['summary_text']						,					_A      )







"""simple docstring"""







from ...configuration_utils import PretrainedConfig
from ...utils import logging


_SCREAMING_SNAKE_CASE	:		str   =   logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE	:		Any   =   {
    '''facebook/opt-125m''': '''https://huggingface.co/facebook/opt-125m/blob/main/config.json''',
    '''facebook/opt-350m''': '''https://huggingface.co/facebook/opt-350m/blob/main/config.json''',
    '''facebook/opt-1.3b''': '''https://huggingface.co/facebook/opt-1.3b/blob/main/config.json''',
    '''facebook/opt-2.7b''': '''https://huggingface.co/facebook/opt-2.7b/blob/main/config.json''',
    '''facebook/opt-6.7b''': '''https://huggingface.co/facebook/opt-6.7b/blob/main/config.json''',
    '''facebook/opt-13b''': '''https://huggingface.co/facebook/opt-13b/blob/main/config.json''',
}






class      _SCREAMING_SNAKE_CASE							(			UpperCAmelCase				):



   '''simple docstring'''



   __UpperCAmelCase	:							Tuple    =    "opt"
   __UpperCAmelCase	:							Any    =    ["past_key_values"]







   def __init__(	self ,				_SCREAMING_SNAKE_CASE=50272 ,				_SCREAMING_SNAKE_CASE=768 ,				_SCREAMING_SNAKE_CASE=12 ,				_SCREAMING_SNAKE_CASE=3072 ,				_SCREAMING_SNAKE_CASE=2048 ,				_SCREAMING_SNAKE_CASE=True ,				_SCREAMING_SNAKE_CASE=False ,				_SCREAMING_SNAKE_CASE=None ,				_SCREAMING_SNAKE_CASE=0.1 ,				_SCREAMING_SNAKE_CASE=0.0 ,				_SCREAMING_SNAKE_CASE=12 ,				_SCREAMING_SNAKE_CASE="relu" ,				_SCREAMING_SNAKE_CASE=0.0 ,				_SCREAMING_SNAKE_CASE=0.02 ,				_SCREAMING_SNAKE_CASE=True ,				_SCREAMING_SNAKE_CASE=1 ,				_SCREAMING_SNAKE_CASE=2 ,				_SCREAMING_SNAKE_CASE=2 ,				_SCREAMING_SNAKE_CASE=True ,				_SCREAMING_SNAKE_CASE=True ,				**_SCREAMING_SNAKE_CASE ,				):


      '''simple docstring'''

      super().__init__(
          pad_token_id=_SCREAMING_SNAKE_CASE ,				bos_token_id=_SCREAMING_SNAKE_CASE ,				eos_token_id=_SCREAMING_SNAKE_CASE ,				**_SCREAMING_SNAKE_CASE ,				)
      __lowerCamelCase    		=					vocab_size
      __lowerCamelCase    		=					max_position_embeddings
      __lowerCamelCase    		=					num_attention_heads
      __lowerCamelCase    		=					word_embed_proj_dim if word_embed_proj_dim is not None else hidden_size
      __lowerCamelCase    		=					ffn_dim
      __lowerCamelCase    		=					hidden_size
      __lowerCamelCase    		=					num_hidden_layers
      __lowerCamelCase    		=					dropout
      __lowerCamelCase    		=					attention_dropout
      __lowerCamelCase    		=					activation_function
      __lowerCamelCase    		=					init_std
      __lowerCamelCase    		=					layerdrop
      __lowerCamelCase    		=					use_cache
      __lowerCamelCase    		=					do_layer_norm_before
      # We keep these variables at `True` for backward compatibility.
      __lowerCamelCase    		=					enable_bias
      __lowerCamelCase    		=					layer_norm_elementwise_affine

      # Note that the only purpose of `_remove_final_layer_norm` is to keep backward compatibility
      # with checkpoints that have been fine-tuned before transformers v4.20.1
      # see https://github.com/facebookresearch/metaseq/pull/164
      __lowerCamelCase    		=					_remove_final_layer_norm






