


import unittest

from transformers import SpeechaTextaConfig
from transformers.testing_utils import is_torch_available, require_torch, torch_device

from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
 import torch

 from transformers.models.speech_to_text_a.modeling_speech_to_text_a import (
     SpeechaTextaDecoder,
     SpeechaTextaForCausalLM,
 )




@require_torch
class A  :






      def __init__( self						:					Any      ,       lowercase_						:					List[Any]      ,       lowercase_						:					int=99      ,       lowercase_						:					str=13      ,       lowercase_						:					Union[str, Any]=16      ,       lowercase_						:					Optional[Any]=7      ,       lowercase_						:					int=True      ,       lowercase_						:					Optional[Any]=True      ,       lowercase_						:					Optional[int]=True      ,       lowercase_						:					List[Any]=False      ,       lowercase_						:					Optional[int]=True      ,       lowercase_						:					Optional[Any]=2      ,       lowercase_						:					Optional[Any]=32      ,       lowercase_						:					List[Any]=4      ,       lowercase_						:					Union[str, Any]=4      ,       lowercase_						:					str=30      ,       lowercase_						:					str=0      ,       lowercase_						:					List[str]=1      ,       lowercase_						:					List[Any]=2      ,       lowercase_						:					List[Any]=None      ,       ) ->						Optional[int]:
             """simple docstring"""




             _lowerCamelCase	:		Optional[Any]          =parent
             _lowerCamelCase	:		Optional[int]          =batch_size
             _lowerCamelCase	:		Tuple          =decoder_seq_length
             # For common tests
             _lowerCamelCase	:		List[Any]          =self.decoder_seq_length
             _lowerCamelCase	:		List[Any]          =is_training
             _lowerCamelCase	:		Dict          =use_attention_mask
             _lowerCamelCase	:		Optional[int]          =use_labels

             _lowerCamelCase	:		int          =vocab_size
             _lowerCamelCase	:		Optional[Any]          =d_model
             _lowerCamelCase	:		Tuple          =d_model
             _lowerCamelCase	:		Any          =decoder_layers
             _lowerCamelCase	:		List[str]          =decoder_layers
             _lowerCamelCase	:		List[Any]          =decoder_ffn_dim
             _lowerCamelCase	:		str          =decoder_attention_heads
             _lowerCamelCase	:		Dict          =decoder_attention_heads
             _lowerCamelCase	:		Optional[int]          =eos_token_id
             _lowerCamelCase	:		int          =bos_token_id
             _lowerCamelCase	:		Dict          =pad_token_id
             _lowerCamelCase	:		str          =decoder_start_token_id
             _lowerCamelCase	:		Dict          =use_cache
             _lowerCamelCase	:		List[str]          =max_position_embeddings

             _lowerCamelCase	:		Any          =None
             _lowerCamelCase	:		List[str]          =decoder_seq_length
             _lowerCamelCase	:		Optional[Any]          =2
             _lowerCamelCase	:		Optional[Any]          =1






      def 	lowerCamelCase	( self						:					Any			) ->						Tuple:
             """simple docstring"""




             _lowerCamelCase	:		Union[str, Any]          =ids_tensor([self.batch_size, self.decoder_seq_length]      ,       self.vocab_size			)

             _lowerCamelCase	:		Optional[int]          =None
             if self.use_attention_mask:
                    _lowerCamelCase	:		Dict          =ids_tensor([self.batch_size, self.decoder_seq_length]      ,       vocab_size=2			)

             _lowerCamelCase	:		Union[str, Any]          =None
             if self.use_labels:
                    _lowerCamelCase	:		str          =ids_tensor([self.batch_size, self.decoder_seq_length]      ,       self.vocab_size			)

             _lowerCamelCase	:		Dict          =SpeechaTextaConfig(
                 vocab_size=self.vocab_size      ,       d_model=self.d_model      ,       decoder_layers=self.decoder_layers      ,       decoder_ffn_dim=self.decoder_ffn_dim      ,       decoder_attention_heads=self.decoder_attention_heads      ,       eos_token_id=self.eos_token_id      ,       bos_token_id=self.bos_token_id      ,       use_cache=self.use_cache      ,       pad_token_id=self.pad_token_id      ,       decoder_start_token_id=self.decoder_start_token_id      ,       max_position_embeddings=self.max_position_embeddings      ,       )

             return (
                 config,
                 input_ids,
                 attention_mask,
                 lm_labels,
             )






      def 	lowerCamelCase	( self						:					Tuple      ,       lowercase_						:					Optional[int]      ,       lowercase_						:					List[Any]      ,       lowercase_						:					int      ,       lowercase_						:					Dict      ,       ) ->						List[str]:
             """simple docstring"""




             _lowerCamelCase	:		int          =True
             _lowerCamelCase	:		Optional[int]          =SpeechaTextaDecoder(config=lowercase_			).to(lowercase_			).eval()
             _lowerCamelCase	:		int          =input_ids[:2]

             input_ids[input_ids == 0] += 1
             # first forward pass
             _lowerCamelCase	:		Union[str, Any]          =model(lowercase_      ,       use_cache=lowercase_			)
             _lowerCamelCase	:		List[str]          =model(lowercase_			)
             _lowerCamelCase	:		str          =model(lowercase_      ,       use_cache=lowercase_			)

             self.parent.assertTrue(len(lowercase_			) == len(lowercase_			)			)
             self.parent.assertTrue(len(lowercase_			) == len(lowercase_			) + 1			)

             _lowerCamelCase	:		Dict          =outputs['past_key_values']

             # create hypothetical next token and extent to next_input_ids
             _lowerCamelCase	:		Any          =ids_tensor((2, 1)      ,       config.vocab_size - 1			) + 1

             # append to next input_ids and
             _lowerCamelCase	:		Union[str, Any]          =torch.cat([input_ids, next_tokens]      ,       dim=-1			)

             print(lowercase_			)

             _lowerCamelCase	:		str          =model(lowercase_			)['last_hidden_state']
             _lowerCamelCase	:		int          =model(lowercase_      ,       past_key_values=lowercase_			)['last_hidden_state']

             # select random slice
             _lowerCamelCase	:		List[str]          =ids_tensor((1,)      ,       output_from_past.shape[-1]			).item()
             _lowerCamelCase	:		Union[str, Any]          =output_from_no_past[:, next_input_ids.shape[-1] - 1, random_slice_idx].detach()
             _lowerCamelCase	:		int          =output_from_past[:, 0, random_slice_idx].detach()

             # test that outputs are equal for slice
             assert torch.allclose(lowercase_      ,       lowercase_      ,       atol=1E-3			)






      def 	lowerCamelCase	( self						:					Any			) ->						Tuple:
             """simple docstring"""




             _lowerCamelCase	:		Any          =self.prepare_config_and_inputs()
             (
                 (
                 _lowerCamelCase
             )     ,					(
                 _lowerCamelCase
             )     ,					(
                 _lowerCamelCase
             )     ,					(
                 _lowerCamelCase
             )     ,					
             )	:		Dict          =config_and_inputs

             _lowerCamelCase	:		Any          ={
                 'input_ids': input_ids,
                 'attention_mask': attention_mask,
             }
             return config, inputs_dict




@require_torch
class A  (       UpperCamelCase_   ,							UpperCamelCase_   ,							UpperCamelCase_   ,							unittest.TestCase					):
      UpperCamelCase__							:  Dict				=(SpeechaTextaDecoder, SpeechaTextaForCausalLM) if is_torch_available() else ()
      UpperCamelCase__							:  Optional[Any]				=(SpeechaTextaForCausalLM,) if is_torch_available() else ()
      UpperCamelCase__							:  List[str]				={'text-generation': SpeechaTextaForCausalLM} if is_torch_available() else {}
      UpperCamelCase__							:  List[str]				=True
      UpperCamelCase__							:  Optional[Any]				=False






      def 	lowerCamelCase	( self						:					Optional[Any]      ,       ) ->						Tuple:
             """simple docstring"""




             _lowerCamelCase	:		List[str]          =SpeechaTextaStandaloneDecoderModelTester(self      ,       is_training=lowercase_			)
             _lowerCamelCase	:		List[Any]          =ConfigTester(self      ,       config_class=lowercase_			)






      def 	lowerCamelCase	( self						:					Optional[int]			) ->						Any:
             """simple docstring"""




             pass






      def 	lowerCamelCase	( self						:					str			) ->						str:
             """simple docstring"""




             pass






      def 	lowerCamelCase	( self						:					str			) ->						Dict:
             """simple docstring"""




             pass






      def 	lowerCamelCase	( self						:					str			) ->						Tuple:
             """simple docstring"""




             self.config_tester.run_common_tests()






      def 	lowerCamelCase	( self						:					List[str]			) ->						Optional[Any]:
             """simple docstring"""




             _lowerCamelCase	:		int          =self.model_tester.prepare_config_and_inputs()
             self.model_tester.create_and_check_decoder_model_past(*lowercase_			)






      def 	lowerCamelCase	( self						:					Optional[Any]			) ->						int:
             """simple docstring"""




             return






from collections import OrderedDict
from typing import Any, Mapping, Optional

from ... import PreTrainedTokenizer
from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig, OnnxConfigWithPast, OnnxSeqaSeqConfigWithPast
from ...onnx.utils import compute_effective_axis_dimension
from ...utils import TensorType, is_torch_available, logging


lowerCamelCase						 =	logging.get_logger(__name__)

lowerCamelCase						 =	{
    'google/bigbird-pegasus-large-arxiv': (
        'https://huggingface.co/google/bigbird-pegasus-large-arxiv/resolve/main/config.json'
    ),
    'google/bigbird-pegasus-large-pubmed': (
        'https://huggingface.co/google/bigbird-pegasus-large-pubmed/resolve/main/config.json'
    ),
    'google/bigbird-pegasus-large-bigpatent': (
        'https://huggingface.co/google/bigbird-pegasus-large-bigpatent/resolve/main/config.json'
    ),
    # See all BigBirdPegasus models at https://huggingface.co/models?filter=bigbird_pegasus
}




class A  (       UpperCamelCase_					):
      UpperCamelCase__							:  int				='bigbird_pegasus'
      UpperCamelCase__							:  Tuple				=['past_key_values']
      UpperCamelCase__							:  str				={
          'num_attention_heads': 'encoder_attention_heads',
          'hidden_size': 'd_model',
          'attention_probs_dropout_prob': 'attention_dropout',
      }






      def __init__( self						:					Tuple      ,       lowercase_						:					int=9_6103      ,       lowercase_						:					Optional[Any]=4096      ,       lowercase_						:					Tuple=16      ,       lowercase_						:					int=4096      ,       lowercase_						:					Any=16      ,       lowercase_						:					str=16      ,       lowercase_						:					List[str]=4096      ,       lowercase_						:					Optional[Any]=16      ,       lowercase_						:					Any=0.0      ,       lowercase_						:					List[Any]=0.0      ,       lowercase_						:					Optional[int]=True      ,       lowercase_						:					Tuple=True      ,       lowercase_						:					Dict="gelu_new"      ,       lowercase_						:					List[str]=1024      ,       lowercase_						:					Dict=0.1      ,       lowercase_						:					Union[str, Any]=0.0      ,       lowercase_						:					Any=0.0      ,       lowercase_						:					str=0.02      ,       lowercase_						:					List[str]=2      ,       lowercase_						:					Any=0.0      ,       lowercase_						:					int=True      ,       lowercase_						:					Union[str, Any]=0      ,       lowercase_						:					List[str]=2      ,       lowercase_						:					Optional[Any]=1      ,       lowercase_						:					Any="block_sparse"      ,       lowercase_						:					str=64      ,       lowercase_						:					Dict=3      ,       lowercase_						:					List[str]=False      ,       **lowercase_						:					List[str]      ,       ) ->						str:
             """simple docstring"""




             _lowerCamelCase	:		Optional[int]          =vocab_size
             _lowerCamelCase	:		Tuple          =max_position_embeddings
             _lowerCamelCase	:		Any          =d_model
             _lowerCamelCase	:		Optional[Any]          =encoder_ffn_dim
             _lowerCamelCase	:		Union[str, Any]          =encoder_layers
             _lowerCamelCase	:		int          =encoder_attention_heads
             _lowerCamelCase	:		Optional[Any]          =decoder_ffn_dim
             _lowerCamelCase	:		int          =decoder_layers
             _lowerCamelCase	:		str          =decoder_attention_heads
             _lowerCamelCase	:		Union[str, Any]          =dropout
             _lowerCamelCase	:		str          =attention_dropout
             _lowerCamelCase	:		int          =activation_dropout
             _lowerCamelCase	:		Union[str, Any]          =activation_function
             _lowerCamelCase	:		Optional[Any]          =init_std
             _lowerCamelCase	:		Optional[Any]          =encoder_layerdrop
             _lowerCamelCase	:		int          =decoder_layerdrop
             _lowerCamelCase	:		Optional[int]          =classifier_dropout
             _lowerCamelCase	:		int          =use_cache
             _lowerCamelCase	:		Dict          =encoder_layers
             _lowerCamelCase	:		List[str]          =scale_embedding  # scale factor will be sqrt(d_model) if True

             # extra config
             _lowerCamelCase	:		Tuple          =attention_type
             _lowerCamelCase	:		str          =block_size
             _lowerCamelCase	:		Optional[int]          =num_random_blocks
             _lowerCamelCase	:		Optional[int]          =use_bias

             super().__init__(
                 pad_token_id=lowercase_      ,       bos_token_id=lowercase_      ,       eos_token_id=lowercase_      ,       is_encoder_decoder=lowercase_      ,       decoder_start_token_id=lowercase_      ,       **lowercase_      ,       )




class A  (       UpperCamelCase_					):






      @property
      def 	lowerCamelCase	( self						:					Dict			) ->						Mapping[str, Mapping[int, str]]:
             """simple docstring"""




             if self.task in ["default", "seq2seq-lm"]:
                    _lowerCamelCase	:		Dict          =OrderedDict(
                        [
                            ('input_ids', {0: 'batch', 1: 'encoder_sequence'}),
                            ('attention_mask', {0: 'batch', 1: 'encoder_sequence'}),
                        ]			)

                    if self.use_past:
                           _lowerCamelCase	:		str          ={0: 'batch'}
                           _lowerCamelCase	:		Optional[int]          ={0: 'batch', 1: 'past_decoder_sequence + sequence'}
                    else:
                           _lowerCamelCase	:		Optional[Any]          ={0: 'batch', 1: 'decoder_sequence'}
                           _lowerCamelCase	:		List[Any]          ={0: 'batch', 1: 'decoder_sequence'}

                    if self.use_past:
                           self.fill_with_past_key_values_(lowercase_      ,       direction='inputs'			)
             elif self.task == "causal-lm":
                    # TODO: figure this case out.
                    _lowerCamelCase	:		Union[str, Any]          =OrderedDict(
                        [
                            ('input_ids', {0: 'batch', 1: 'encoder_sequence'}),
                            ('attention_mask', {0: 'batch', 1: 'encoder_sequence'}),
                        ]			)
                    if self.use_past:
                           _lowerCamelCase     ,					_lowerCamelCase	:		Union[str, Any]          =self.num_layers
                           for i in range(lowercase_			):
                                  _lowerCamelCase	:		Dict          ={0: 'batch', 2: 'past_sequence + sequence'}
                                  _lowerCamelCase	:		List[str]          ={0: 'batch', 2: 'past_sequence + sequence'}
             else:
                    _lowerCamelCase	:		Optional[int]          =OrderedDict(
                        [
                            ('input_ids', {0: 'batch', 1: 'encoder_sequence'}),
                            ('attention_mask', {0: 'batch', 1: 'encoder_sequence'}),
                            ('decoder_input_ids', {0: 'batch', 1: 'decoder_sequence'}),
                            ('decoder_attention_mask', {0: 'batch', 1: 'decoder_sequence'}),
                        ]			)

             return common_inputs






      @property
      def 	lowerCamelCase	( self						:					Dict			) ->						Mapping[str, Mapping[int, str]]:
             """simple docstring"""




             if self.task in ["default", "seq2seq-lm"]:
                    _lowerCamelCase	:		Dict          =super().outputs
             else:
                    _lowerCamelCase	:		Optional[Any]          =super(lowercase_      ,       self			).outputs
                    if self.use_past:
                           _lowerCamelCase     ,					_lowerCamelCase	:		str          =self.num_layers
                           for i in range(lowercase_			):
                                  _lowerCamelCase	:		Tuple          ={0: 'batch', 2: 'past_sequence + sequence'}
                                  _lowerCamelCase	:		List[Any]          ={0: 'batch', 2: 'past_sequence + sequence'}
             return common_outputs






      def 	lowerCamelCase	( self						:					Optional[Any]      ,       lowercase_						:					PreTrainedTokenizer      ,       lowercase_						:					int = -1      ,       lowercase_						:					int = -1      ,       lowercase_						:					bool = False      ,       lowercase_						:					Optional[TensorType] = None      ,       ) ->						Mapping[str, Any]:
             """simple docstring"""




             _lowerCamelCase	:		int          =self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
                 lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_			)

             # Generate decoder inputs
             _lowerCamelCase	:		str          =seq_length if not self.use_past else 1
             _lowerCamelCase	:		List[Any]          =self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
                 lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_			)
             _lowerCamelCase	:		List[Any]          ={F'''decoder_{name}''': tensor for name, tensor in decoder_inputs.items()}
             _lowerCamelCase	:		Union[str, Any]          =dict(**lowercase_      ,       **lowercase_			)

             if self.use_past:
                    if not is_torch_available():
                           raise ValueError('Cannot generate dummy past_keys inputs without PyTorch installed.'			)
                    else:
                           import torch
                    _lowerCamelCase     ,					_lowerCamelCase	:		int          =common_inputs['input_ids'].shape
                    _lowerCamelCase	:		List[Any]          =common_inputs['decoder_input_ids'].shape[1]
                    _lowerCamelCase     ,					_lowerCamelCase	:		Union[str, Any]          =self.num_attention_heads
                    _lowerCamelCase	:		Dict          =(
                        batch,
                        num_encoder_attention_heads,
                        encoder_seq_length,
                        self._config.hidden_size // num_encoder_attention_heads,
                    )
                    _lowerCamelCase	:		List[Any]          =decoder_seq_length + 3
                    _lowerCamelCase	:		int          =(
                        batch,
                        num_decoder_attention_heads,
                        decoder_past_length,
                        self._config.hidden_size // num_decoder_attention_heads,
                    )

                    _lowerCamelCase	:		Union[str, Any]          =torch.cat(
                        [common_inputs['decoder_attention_mask'], torch.ones(lowercase_      ,       lowercase_			)]      ,       dim=1			)

                    _lowerCamelCase	:		Optional[Any]          =[]
                    # If the number of encoder and decoder layers are present in the model configuration, both are considered
                    _lowerCamelCase     ,					_lowerCamelCase	:		Tuple          =self.num_layers
                    _lowerCamelCase	:		Optional[int]          =min(lowercase_      ,       lowercase_			)
                    _lowerCamelCase	:		int          =max(lowercase_      ,       lowercase_			) - min_num_layers
                    _lowerCamelCase	:		str          ='encoder' if num_encoder_layers > num_decoder_layers else 'decoder'

                    for _ in range(lowercase_			):
                           common_inputs["past_key_values"].append(
                               (
                                   torch.zeros(lowercase_			),
                                   torch.zeros(lowercase_			),
                                   torch.zeros(lowercase_			),
                                   torch.zeros(lowercase_			),
                               )			)
                    # TODO: test this.
                    _lowerCamelCase	:		List[Any]          =encoder_shape if remaining_side_name == 'encoder' else decoder_shape
                    for _ in range(lowercase_      ,       lowercase_			):
                           common_inputs["past_key_values"].append((torch.zeros(lowercase_			), torch.zeros(lowercase_			))			)
             return common_inputs






      def 	lowerCamelCase	( self						:					Optional[Any]      ,       lowercase_						:					PreTrainedTokenizer      ,       lowercase_						:					int = -1      ,       lowercase_						:					int = -1      ,       lowercase_						:					bool = False      ,       lowercase_						:					Optional[TensorType] = None      ,       ) ->						Mapping[str, Any]:
             """simple docstring"""




             _lowerCamelCase	:		str          =self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
                 lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_			)

             if self.use_past:
                    if not is_torch_available():
                           raise ValueError('Cannot generate dummy past_keys inputs without PyTorch installed.'			)
                    else:
                           import torch
                    _lowerCamelCase     ,					_lowerCamelCase	:		Optional[int]          =common_inputs['input_ids'].shape
                    # Not using the same length for past_key_values
                    _lowerCamelCase	:		Union[str, Any]          =seqlen + 2
                    _lowerCamelCase     ,					_lowerCamelCase	:		List[Any]          =self.num_layers
                    _lowerCamelCase     ,					_lowerCamelCase	:		Any          =self.num_attention_heads
                    _lowerCamelCase	:		List[str]          =(
                        batch,
                        num_encoder_attention_heads,
                        past_key_values_length,
                        self._config.hidden_size // num_encoder_attention_heads,
                    )

                    _lowerCamelCase	:		Tuple          =common_inputs['attention_mask'].dtype
                    _lowerCamelCase	:		Tuple          =torch.cat(
                        [common_inputs['attention_mask'], torch.ones(lowercase_      ,       lowercase_      ,       dtype=lowercase_			)]      ,       dim=1			)
                    _lowerCamelCase	:		Dict          =[
                        (torch.zeros(lowercase_			), torch.zeros(lowercase_			)) for _ in range(lowercase_			)
                    ]
             return common_inputs






      def 	lowerCamelCase	( self						:					List[str]      ,       lowercase_						:					PreTrainedTokenizer      ,       lowercase_						:					int = -1      ,       lowercase_						:					int = -1      ,       lowercase_						:					bool = False      ,       lowercase_						:					Optional[TensorType] = None      ,       ) ->						Mapping[str, Any]:
             """simple docstring"""




             _lowerCamelCase	:		Optional[Any]          =compute_effective_axis_dimension(
                 lowercase_      ,       fixed_dimension=OnnxConfig.default_fixed_batch      ,       num_token_to_add=0			)

             # If dynamic axis (-1) we forward with a fixed dimension of 8 tokens to avoid optimizations made by ONNX
             _lowerCamelCase	:		Tuple          =tokenizer.num_special_tokens_to_add(lowercase_			)
             _lowerCamelCase	:		Any          =compute_effective_axis_dimension(
                 lowercase_      ,       fixed_dimension=OnnxConfig.default_fixed_sequence      ,       num_token_to_add=lowercase_			)

             # Generate dummy inputs according to compute batch and sequence
             _lowerCamelCase	:		Any          =[' '.join([tokenizer.unk_token]			) * seq_length] * batch_size
             _lowerCamelCase	:		int          =dict(tokenizer(lowercase_      ,       return_tensors=lowercase_			)			)
             return common_inputs






      def 	lowerCamelCase	( self						:					Any      ,       lowercase_						:					PreTrainedTokenizer      ,       lowercase_						:					int = -1      ,       lowercase_						:					int = -1      ,       lowercase_						:					bool = False      ,       lowercase_						:					Optional[TensorType] = None      ,       ) ->						Mapping[str, Any]:
             """simple docstring"""




             if self.task in ["default", "seq2seq-lm"]:
                    _lowerCamelCase	:		Union[str, Any]          =self._generate_dummy_inputs_for_default_and_seqaseq_lm(
                        lowercase_      ,       batch_size=lowercase_      ,       seq_length=lowercase_      ,       is_pair=lowercase_      ,       framework=lowercase_			)

             elif self.task == "causal-lm":
                    _lowerCamelCase	:		List[str]          =self._generate_dummy_inputs_for_causal_lm(
                        lowercase_      ,       batch_size=lowercase_      ,       seq_length=lowercase_      ,       is_pair=lowercase_      ,       framework=lowercase_			)
             else:
                    _lowerCamelCase	:		List[Any]          =self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
                        lowercase_      ,       batch_size=lowercase_      ,       seq_length=lowercase_      ,       is_pair=lowercase_      ,       framework=lowercase_			)

             return common_inputs






      def 	lowerCamelCase	( self						:					List[Any]      ,       lowercase_						:					Union[str, Any]      ,       lowercase_						:					Optional[int]      ,       lowercase_						:					Dict      ,       lowercase_						:					Tuple			) ->						Dict:
             """simple docstring"""




             if self.task in ["default", "seq2seq-lm"]:
                    _lowerCamelCase	:		Union[str, Any]          =super()._flatten_past_key_values_(lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_			)
             else:
                    _lowerCamelCase	:		List[str]          =super(lowercase_      ,       self			)._flatten_past_key_values_(
                        lowercase_      ,       lowercase_      ,       lowercase_      ,       lowercase_			)


