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


lowerCAmelCase__					=				-1 if torch_device == 'cpu' else 0
@is_pipeline_test
class        a_				(		unittest.TestCase		):






	'''simple docstring'''






	UpperCAmelCase_							=      MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING
	UpperCAmelCase_							=      TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING




	def 	__snake_case		(    self      :						int    ,					lowercase__      :						str    ,					lowercase__      :						int    ,					lowercase__      :						List[str]):







								'''simple docstring'''



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




	def 	__snake_case		(    self      :						Optional[Any]    ,					lowercase__      :						int    ,					lowercase__      :						Optional[int]):







								'''simple docstring'''



								lowerCAmelCase__  			=      summarizer.model

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

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

								# Some models (Switch Transformers, LED, T5, LongT5, etc) can handle long sequences.
								lowerCAmelCase__  			=      [
								    '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(__UpperCamelCase    ,					__UpperCamelCase)
															    and get_gpu_count() > 0
															    and len(summarizer.model.trainable_weights) > 0
															):
																						with self.assertRaises(__UpperCamelCase):
																													lowerCAmelCase__  			=      summarizer('This ' * 1_000)
								lowerCAmelCase__  			=      summarizer('This ' * 1_000    ,					truncation=TruncationStrategy.ONLY_FIRST)




	@require_torch
	def 	__snake_case		(    self      :						str):







								'''simple docstring'''



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




	@require_tf
	def 	__snake_case		(    self      :						Union[str, Any]):







								'''simple docstring'''



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




	@require_torch
	@slow
	def 	__snake_case		(    self      :						str):







								'''simple docstring'''



								lowerCAmelCase__  			=      pipeline(task='summarization'    ,					device=__UpperCamelCase)
								lowerCAmelCase__  			=      (
								    ' (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.'
								)
								lowerCAmelCase__  			=      (
								    ' 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 .'
								)
								lowerCAmelCase__  			=      summarizer(__UpperCamelCase)
								self.assertEqual(result[0]['summary_text']    ,					__UpperCamelCase)

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


lowerCAmelCase__					=				logging.get_logger(__name__)

lowerCAmelCase__					=				{
    'ZinengTang/tvlt-base': 'https://huggingface.co/ZinengTang/tvlt-base/blob/main/config.json',
}
class        a_				(		SCREAMING_SNAKE_CASE		):






 '''simple docstring'''






 UpperCAmelCase_							=      'tvlt'




 def __init__(    self      :						Dict    ,					lowercase__      :						str=224    ,					lowercase__      :						int=2_048    ,					lowercase__      :						int=128    ,					lowercase__      :						Optional[Any]=[16, 16]    ,					lowercase__      :						List[str]=[16, 16]    ,					lowercase__      :						Optional[int]=3    ,					lowercase__      :						Tuple=1    ,					lowercase__      :						Union[str, Any]=8    ,					lowercase__      :						int=768    ,					lowercase__      :						Tuple=12    ,					lowercase__      :						List[str]=12    ,					lowercase__      :						Union[str, Any]=3_072    ,					lowercase__      :						Union[str, Any]="gelu"    ,					lowercase__      :						Dict=0.0    ,					lowercase__      :						Tuple=0.0    ,					lowercase__      :						Union[str, Any]=0.02    ,					lowercase__      :						Any=1e-6    ,					lowercase__      :						Dict=True    ,					lowercase__      :						int=False    ,					lowercase__      :						Tuple=16    ,					lowercase__      :						Optional[int]=512    ,					lowercase__      :						int=8    ,					lowercase__      :						List[Any]=2_048    ,					lowercase__      :						Optional[int]=0.75    ,					lowercase__      :						Union[str, Any]=0.15    ,					lowercase__      :						List[str]="frame-level"    ,					lowercase__      :						Dict=True    ,					lowercase__      :						Tuple=True    ,					lowercase__      :						Any="classification"    ,					**lowercase__      :						Union[str, Any]    ,					):







        '''simple docstring'''



        super().__init__(**lowercase__)

        if audio_mask_type not in ("frame-level", "patch_level"):
               raise ValueError(
                   'audio_mask_type must be one of two acceptable strategies - {\'frame_level\', \'patch-level\') '
                   F"""got {audio_mask_type}""")

        lowerCAmelCase__  			=      image_size
        lowerCAmelCase__  			=      spectrogram_length
        lowerCAmelCase__  			=      frequency_length
        lowerCAmelCase__  			=      image_patch_size
        lowerCAmelCase__  			=      audio_patch_size
        lowerCAmelCase__  			=      num_image_channels
        lowerCAmelCase__  			=      num_audio_channels
        lowerCAmelCase__  			=      num_frames

        lowerCAmelCase__  			=      hidden_size
        lowerCAmelCase__  			=      num_hidden_layers
        lowerCAmelCase__  			=      num_attention_heads
        lowerCAmelCase__  			=      intermediate_size
        lowerCAmelCase__  			=      hidden_act
        lowerCAmelCase__  			=      hidden_dropout_prob
        lowerCAmelCase__  			=      attention_probs_dropout_prob
        lowerCAmelCase__  			=      initializer_range
        lowerCAmelCase__  			=      layer_norm_eps
        lowerCAmelCase__  			=      qkv_bias
        lowerCAmelCase__  			=      use_mean_pooling

        lowerCAmelCase__  			=      decoder_num_attention_heads
        lowerCAmelCase__  			=      decoder_hidden_size
        lowerCAmelCase__  			=      decoder_num_hidden_layers
        lowerCAmelCase__  			=      decoder_intermediate_size
        lowerCAmelCase__  			=      pixel_mask_ratio
        lowerCAmelCase__  			=      audio_mask_ratio
        lowerCAmelCase__  			=      audio_mask_type

        lowerCAmelCase__  			=      task_matching
        lowerCAmelCase__  			=      task_mae
        lowerCAmelCase__  			=      loss_type
