






from __future__ import annotations

import unittest

from transformers import RoFormerConfig, is_tf_available
from transformers.testing_utils import require_tf, slow

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_tf_available():
  import tensorflow as tf

  from transformers import (
      TFRoFormerForCausalLM,
      TFRoFormerForMaskedLM,
      TFRoFormerForMultipleChoice,
      TFRoFormerForQuestionAnswering,
      TFRoFormerForSequenceClassification,
      TFRoFormerForTokenClassification,
      TFRoFormerModel,
  )
  from transformers.models.roformer.modeling_tf_roformer import (
      TFRoFormerSelfAttention,
      TFRoFormerSinusoidalPositionalEmbedding,
  )
class 		SCREAMING_SNAKE_CASE__	:

  '''simple docstring'''







  def __init__(      self		:			Union[str, Any]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			Union[str, Any]=13       ,				lowerCamelCase		:			str=7       ,				lowerCamelCase		:			Tuple=True       ,				lowerCamelCase		:			Union[str, Any]=True       ,				lowerCamelCase		:			List[Any]=True       ,				lowerCamelCase		:			int=True       ,				lowerCamelCase		:			Optional[int]=99       ,				lowerCamelCase		:			Any=32       ,				lowerCamelCase		:			Union[str, Any]=2       ,				lowerCamelCase		:			Optional[Any]=4       ,				lowerCamelCase		:			Union[str, Any]=37       ,				lowerCamelCase		:			Dict="gelu"       ,				lowerCamelCase		:			Dict=0.1       ,				lowerCamelCase		:			List[Any]=0.1       ,				lowerCamelCase		:			List[Any]=512       ,				lowerCamelCase		:			Any=16       ,				lowerCamelCase		:			str=2       ,				lowerCamelCase		:			Optional[Any]=0.02       ,				lowerCamelCase		:			int=3       ,				lowerCamelCase		:			Optional[int]=4       ,				lowerCamelCase		:			List[Any]=None       ,				)						->	int:


         """simple docstring"""
         _UpperCAmelCase							=    parent
         _UpperCAmelCase							=    13
         _UpperCAmelCase							=    7
         _UpperCAmelCase							=    True
         _UpperCAmelCase							=    True
         _UpperCAmelCase							=    True
         _UpperCAmelCase							=    True
         _UpperCAmelCase							=    99
         _UpperCAmelCase							=    32
         _UpperCAmelCase							=    2
         _UpperCAmelCase							=    4
         _UpperCAmelCase							=    37
         _UpperCAmelCase							=    """gelu"""
         _UpperCAmelCase							=    0.1
         _UpperCAmelCase							=    0.1
         _UpperCAmelCase							=    512
         _UpperCAmelCase							=    16
         _UpperCAmelCase							=    2
         _UpperCAmelCase							=    0.02
         _UpperCAmelCase							=    3
         _UpperCAmelCase							=    4
         _UpperCAmelCase							=    None


  def  lowerCamelCase       (      self		:			Union[str, Any]							)						->	Any:


         """simple docstring"""
         _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				self.vocab_size							)

         _UpperCAmelCase							=    None
         if self.use_input_mask:
                _UpperCAmelCase							=    random_attention_mask([self.batch_size, self.seq_length]							)

         _UpperCAmelCase							=    None
         if self.use_token_type_ids:
                _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				self.type_vocab_size							)

         _UpperCAmelCase							=    None
         _UpperCAmelCase							=    None
         _UpperCAmelCase							=    None
         if self.use_labels:
                _UpperCAmelCase							=    ids_tensor([self.batch_size]       ,				self.type_sequence_label_size							)
                _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				self.num_labels							)
                _UpperCAmelCase							=    ids_tensor([self.batch_size]       ,				self.num_choices							)

         _UpperCAmelCase							=    RoFormerConfig(
             vocab_size=self.vocab_size       ,				hidden_size=self.hidden_size       ,				num_hidden_layers=self.num_hidden_layers       ,				num_attention_heads=self.num_attention_heads       ,				intermediate_size=self.intermediate_size       ,				hidden_act=self.hidden_act       ,				hidden_dropout_prob=self.hidden_dropout_prob       ,				attention_probs_dropout_prob=self.attention_probs_dropout_prob       ,				max_position_embeddings=self.max_position_embeddings       ,				type_vocab_size=self.type_vocab_size       ,				initializer_range=self.initializer_range       ,				return_dict=lowerCamelCase       ,				)

         return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels


  def  lowerCamelCase       (      self		:			Dict       ,				lowerCamelCase		:			Union[str, Any]       ,				lowerCamelCase		:			Optional[int]       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Optional[int]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Optional[int]							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    TFRoFormerModel(config=lowerCamelCase							)
         _UpperCAmelCase							=    {"""input_ids""": input_ids, """attention_mask""": input_mask, """token_type_ids""": token_type_ids}

         _UpperCAmelCase							=    [input_ids, input_mask]
         _UpperCAmelCase							=    model(lowerCamelCase							)

         _UpperCAmelCase							=    model(lowerCamelCase							)

         self.parent.assertEqual(result.last_hidden_state.shape       ,				(self.batch_size, self.seq_length, self.hidden_size)							)


  def  lowerCamelCase       (      self		:			Any       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Union[str, Any]       ,				lowerCamelCase		:			Optional[Any]							)						->	Tuple:


         """simple docstring"""
         _UpperCAmelCase							=    True
         _UpperCAmelCase							=    TFRoFormerForCausalLM(config=lowerCamelCase							)
         _UpperCAmelCase							=    {
             """input_ids""": input_ids,
             """attention_mask""": input_mask,
             """token_type_ids""": token_type_ids,
         }
         _UpperCAmelCase							=    model(lowerCamelCase							)["""logits"""]
         self.parent.assertListEqual(
             list(prediction_scores.numpy().shape							)       ,				[self.batch_size, self.seq_length, self.vocab_size]							)


  def  lowerCamelCase       (      self		:			Optional[Any]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Dict       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			List[Any]							)						->	Optional[Any]:


         """simple docstring"""
         _UpperCAmelCase							=    TFRoFormerForMaskedLM(config=lowerCamelCase							)
         _UpperCAmelCase							=    {
             """input_ids""": input_ids,
             """attention_mask""": input_mask,
             """token_type_ids""": token_type_ids,
         }
         _UpperCAmelCase							=    model(lowerCamelCase							)
         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.seq_length, self.vocab_size)							)


  def  lowerCamelCase       (      self		:			Tuple       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Dict       ,				lowerCamelCase		:			int       ,				lowerCamelCase		:			int							)						->	Optional[Any]:


         """simple docstring"""
         _UpperCAmelCase							=    self.num_labels
         _UpperCAmelCase							=    TFRoFormerForSequenceClassification(config=lowerCamelCase							)
         _UpperCAmelCase							=    {
             """input_ids""": input_ids,
             """attention_mask""": input_mask,
             """token_type_ids""": token_type_ids,
         }

         _UpperCAmelCase							=    model(lowerCamelCase							)
         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.num_labels)							)


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


         """simple docstring"""
         _UpperCAmelCase							=    self.num_choices
         _UpperCAmelCase							=    TFRoFormerForMultipleChoice(config=lowerCamelCase							)
         _UpperCAmelCase							=    tf.tile(tf.expand_dims(lowerCamelCase       ,				1							)       ,				(1, self.num_choices, 1)							)
         _UpperCAmelCase							=    tf.tile(tf.expand_dims(lowerCamelCase       ,				1							)       ,				(1, self.num_choices, 1)							)
         _UpperCAmelCase							=    tf.tile(tf.expand_dims(lowerCamelCase       ,				1							)       ,				(1, self.num_choices, 1)							)
         _UpperCAmelCase							=    {
             """input_ids""": multiple_choice_inputs_ids,
             """attention_mask""": multiple_choice_input_mask,
             """token_type_ids""": multiple_choice_token_type_ids,
         }
         _UpperCAmelCase							=    model(lowerCamelCase							)
         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.num_choices)							)


  def  lowerCamelCase       (      self		:			Union[str, Any]       ,				lowerCamelCase		:			Union[str, Any]       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			int							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    self.num_labels
         _UpperCAmelCase							=    TFRoFormerForTokenClassification(config=lowerCamelCase							)
         _UpperCAmelCase							=    {
             """input_ids""": input_ids,
             """attention_mask""": input_mask,
             """token_type_ids""": token_type_ids,
         }
         _UpperCAmelCase							=    model(lowerCamelCase							)
         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.seq_length, self.num_labels)							)


  def  lowerCamelCase       (      self		:			List[Any]       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Dict							)						->	str:


         """simple docstring"""
         _UpperCAmelCase							=    TFRoFormerForQuestionAnswering(config=lowerCamelCase							)
         _UpperCAmelCase							=    {
             """input_ids""": input_ids,
             """attention_mask""": input_mask,
             """token_type_ids""": token_type_ids,
         }

         _UpperCAmelCase							=    model(lowerCamelCase							)
         self.parent.assertEqual(result.start_logits.shape       ,				(self.batch_size, self.seq_length)							)
         self.parent.assertEqual(result.end_logits.shape       ,				(self.batch_size, self.seq_length)							)





  def  lowerCamelCase       (      self		:			Dict							)						->	str:


         """simple docstring"""
         _UpperCAmelCase							=    self.prepare_config_and_inputs()
         (
             (
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			
         )							=    config_and_inputs
         _UpperCAmelCase							=    {"""input_ids""": input_ids, """token_type_ids""": token_type_ids, """attention_mask""": input_mask}
         return config, inputs_dict



@require_tf
class 		SCREAMING_SNAKE_CASE__	(  UpperCAmelCase					,      UpperCAmelCase					,      unittest.TestCase     ):

  '''simple docstring'''







  _lowerCamelCase    =  (
      (
          TFRoFormerModel,
          TFRoFormerForCausalLM,
          TFRoFormerForMaskedLM,
          TFRoFormerForQuestionAnswering,
          TFRoFormerForSequenceClassification,
          TFRoFormerForTokenClassification,
          TFRoFormerForMultipleChoice,
      )
      if is_tf_available()
      else ()
  )
  _lowerCamelCase    =  (
      {
          '''feature-extraction''': TFRoFormerModel,
          '''fill-mask''': TFRoFormerForMaskedLM,
          '''question-answering''': TFRoFormerForQuestionAnswering,
          '''text-classification''': TFRoFormerForSequenceClassification,
          '''text-generation''': TFRoFormerForCausalLM,
          '''token-classification''': TFRoFormerForTokenClassification,
          '''zero-shot''': TFRoFormerForSequenceClassification,
      }
      if is_tf_available()
      else {}
  )

  _lowerCamelCase    =  False
  _lowerCamelCase    =  False


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


         """simple docstring"""
         if pipeline_test_casse_name == "TextGenerationPipelineTests":
                return True

         return False


  def  lowerCamelCase       (      self		:			Any							)						->	str:


         """simple docstring"""
         _UpperCAmelCase							=    TFRoFormerModelTester(self							)
         _UpperCAmelCase							=    ConfigTester(self       ,				config_class=lowerCamelCase       ,				hidden_size=37							)


  def  lowerCamelCase       (      self		:			List[str]							)						->	Any:


         """simple docstring"""
         self.config_tester.run_common_tests()


  def  lowerCamelCase       (      self		:			List[str]							)						->	Tuple:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_model(*lowerCamelCase							)


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


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_masked_lm(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			List[Any]							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_lm_head(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			Union[str, Any]							)						->	Union[str, Any]:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_multiple_choice(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			str							)						->	Any:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_question_answering(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			List[str]							)						->	Tuple:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_sequence_classification(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			int							)						->	List[Any]:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_token_classification(*lowerCamelCase							)





  @slow
  def  lowerCamelCase       (      self		:			Optional[int]							)						->	Union[str, Any]:


         """simple docstring"""
         _UpperCAmelCase							=    TFRoFormerModel.from_pretrained("""junnyu/roformer_chinese_base"""							)
         self.assertIsNotNone(lowerCamelCase							)



@require_tf
class 		SCREAMING_SNAKE_CASE__	(  unittest.TestCase     ):

  '''simple docstring'''







  @slow
  def  lowerCamelCase       (      self		:			Dict							)						->	List[Any]:


         """simple docstring"""
         _UpperCAmelCase							=    TFRoFormerForMaskedLM.from_pretrained("""junnyu/roformer_chinese_base"""							)
         _UpperCAmelCase							=    tf.constant([[0, 1, 2, 3, 4, 5]]							)
         _UpperCAmelCase							=    model(lowerCamelCase							)[0]

         # TODO Replace vocab size
         _UpperCAmelCase							=    5_0000

         _UpperCAmelCase							=    [1, 6, vocab_size]
         self.assertEqual(output.shape       ,				lowerCamelCase							)

         print(output[:, :3, :3]							)

         # TODO Replace values below with what was printed above.
         _UpperCAmelCase							=    tf.constant(
             [
                 [
                     [-0.1205_3341, -1.026_4901, 0.2922_1946],
                     [-1.513_3783, 0.19_7433, 0.1519_0607],
                     [-5.013_5403, -3.90_0256, -0.8403_8764],
                 ]
             ]							)
         tf.debugging.assert_near(output[:, :3, :3]       ,				lowerCamelCase       ,				atol=1E-4							)



@require_tf
class 		SCREAMING_SNAKE_CASE__	(  unittest.TestCase     ):

  '''simple docstring'''







  _lowerCamelCase    =  1E-4


  def  lowerCamelCase       (      self		:			Tuple							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    tf.constant([[4, 10]]							)
         _UpperCAmelCase							=    TFRoFormerSinusoidalPositionalEmbedding(num_positions=6       ,				embedding_dim=6							)

         _UpperCAmelCase							=    emba(input_ids.shape							)
         _UpperCAmelCase							=    tf.constant(
             [[0.0000, 0.0000, 0.0000, 1.0000, 1.0000, 1.0000], [0.8415, 0.0464, 0.0022, 0.5403, 0.9989, 1.0000]]							)

         tf.debugging.assert_near(lowerCamelCase       ,				lowerCamelCase       ,				atol=self.tolerance							)





  def  lowerCamelCase       (      self		:			List[Any]							)						->	Optional[int]:


         """simple docstring"""
         _UpperCAmelCase							=    tf.constant(
             [
                 [0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
                 [0.8415, 0.8219, 0.8020, 0.7819, 0.7617],
                 [0.9093, 0.9364, 0.9581, 0.9749, 0.9870],
             ]							)
         _UpperCAmelCase							=    TFRoFormerSinusoidalPositionalEmbedding(num_positions=512       ,				embedding_dim=512							)
         emba([2, 16, 512]							)
         _UpperCAmelCase							=    emba.weight[:3, :5]

         tf.debugging.assert_near(lowerCamelCase       ,				lowerCamelCase       ,				atol=self.tolerance							)



@require_tf
class 		SCREAMING_SNAKE_CASE__	(  unittest.TestCase     ):

  '''simple docstring'''







  _lowerCamelCase    =  1E-4


  def  lowerCamelCase       (      self		:			Union[str, Any]							)						->	int:


         """simple docstring"""
         # 2,12,16,64
         _UpperCAmelCase							=    tf.reshape(tf.range(2 * 12 * 16 * 64       ,				dtype=tf.floataa							)       ,				shape=(2, 12, 16, 64)							) / 100

         _UpperCAmelCase							=    -tf.reshape(tf.range(2 * 12 * 16 * 64       ,				dtype=tf.floataa							)       ,				shape=(2, 12, 16, 64)							) / 100

         _UpperCAmelCase							=    TFRoFormerSinusoidalPositionalEmbedding(num_positions=32       ,				embedding_dim=64							)
         _UpperCAmelCase							=    embed_positions([2, 16, 768]							)[None, None, :, :]

         _UpperCAmelCase	,			_UpperCAmelCase							=    TFRoFormerSelfAttention.apply_rotary_position_embeddings(
             lowerCamelCase       ,				lowerCamelCase       ,				lowerCamelCase							)

         _UpperCAmelCase							=    tf.constant(
             [
                 [0.0000, 0.0100, 0.0200, 0.0300, 0.0400, 0.0500, 0.0600, 0.0700],
                 [-0.2012, 0.8897, 0.0263, 0.9401, 0.2074, 0.9463, 0.3481, 0.9343],
                 [-1.7057, 0.6271, -1.2145, 1.3897, -0.6303, 1.7647, -0.1173, 1.8985],
                 [-2.1731, -1.6397, -2.7358, 0.2854, -2.1840, 1.7183, -1.3018, 2.4871],
                 [0.2717, -3.6173, -2.9206, -2.1988, -3.6638, 0.3858, -2.9155, 2.2980],
                 [3.9859, -2.1580, -0.7984, -4.4904, -4.1181, -2.0252, -4.4782, 1.1253],
             ]							)
         _UpperCAmelCase							=    tf.constant(
             [
                 [0.0000, -0.0100, -0.0200, -0.0300, -0.0400, -0.0500, -0.0600, -0.0700],
                 [0.2012, -0.8897, -0.0263, -0.9401, -0.2074, -0.9463, -0.3481, -0.9343],
                 [1.7057, -0.6271, 1.2145, -1.3897, 0.6303, -1.7647, 0.1173, -1.8985],
                 [2.1731, 1.6397, 2.7358, -0.2854, 2.1840, -1.7183, 1.3018, -2.4871],
                 [-0.2717, 3.6173, 2.9206, 2.1988, 3.6638, -0.3858, 2.9155, -2.2980],
                 [-3.9859, 2.1580, 0.7984, 4.4904, 4.1181, 2.0252, 4.4782, -1.1253],
             ]							)

         tf.debugging.assert_near(query_layer[0, 0, :6, :8]       ,				lowerCamelCase       ,				atol=self.tolerance							)
         tf.debugging.assert_near(key_layer[0, 0, :6, :8]       ,				lowerCamelCase       ,				atol=self.tolerance							)







import unittest

from transformers import DebertaVaConfig, is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow, torch_device

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 import (
      DebertaVaForMaskedLM,
      DebertaVaForMultipleChoice,
      DebertaVaForQuestionAnswering,
      DebertaVaForSequenceClassification,
      DebertaVaForTokenClassification,
      DebertaVaModel,
  )
  from transformers.models.deberta_va.modeling_deberta_va import DEBERTA_V2_PRETRAINED_MODEL_ARCHIVE_LIST
class 		SCREAMING_SNAKE_CASE__	(  UpperCAmelCase     ):

  '''simple docstring'''







  def __init__(      self		:			Union[str, Any]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Optional[Any]=13       ,				lowerCamelCase		:			List[Any]=7       ,				lowerCamelCase		:			List[Any]=True       ,				lowerCamelCase		:			str=True       ,				lowerCamelCase		:			List[str]=True       ,				lowerCamelCase		:			List[str]=True       ,				lowerCamelCase		:			Optional[int]=99       ,				lowerCamelCase		:			int=32       ,				lowerCamelCase		:			str=5       ,				lowerCamelCase		:			str=4       ,				lowerCamelCase		:			List[str]=37       ,				lowerCamelCase		:			str="gelu"       ,				lowerCamelCase		:			Dict=0.1       ,				lowerCamelCase		:			Any=0.1       ,				lowerCamelCase		:			Union[str, Any]=512       ,				lowerCamelCase		:			Optional[int]=16       ,				lowerCamelCase		:			Any=2       ,				lowerCamelCase		:			Any=0.02       ,				lowerCamelCase		:			List[Any]=False       ,				lowerCamelCase		:			Optional[Any]=True       ,				lowerCamelCase		:			Optional[int]="None"       ,				lowerCamelCase		:			Tuple=3       ,				lowerCamelCase		:			int=4       ,				lowerCamelCase		:			Optional[Any]=None       ,				)						->	Optional[int]:


         """simple docstring"""
         _UpperCAmelCase							=    parent
         _UpperCAmelCase							=    batch_size
         _UpperCAmelCase							=    seq_length
         _UpperCAmelCase							=    is_training
         _UpperCAmelCase							=    use_input_mask
         _UpperCAmelCase							=    use_token_type_ids
         _UpperCAmelCase							=    use_labels
         _UpperCAmelCase							=    vocab_size
         _UpperCAmelCase							=    hidden_size
         _UpperCAmelCase							=    num_hidden_layers
         _UpperCAmelCase							=    num_attention_heads
         _UpperCAmelCase							=    intermediate_size
         _UpperCAmelCase							=    hidden_act
         _UpperCAmelCase							=    hidden_dropout_prob
         _UpperCAmelCase							=    attention_probs_dropout_prob
         _UpperCAmelCase							=    max_position_embeddings
         _UpperCAmelCase							=    type_vocab_size
         _UpperCAmelCase							=    type_sequence_label_size
         _UpperCAmelCase							=    initializer_range
         _UpperCAmelCase							=    num_labels
         _UpperCAmelCase							=    num_choices
         _UpperCAmelCase							=    relative_attention
         _UpperCAmelCase							=    position_biased_input
         _UpperCAmelCase							=    pos_att_type
         _UpperCAmelCase							=    scope


  def  lowerCamelCase       (      self		:			str							)						->	Union[str, Any]:


         """simple docstring"""
         _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				self.vocab_size							)

         _UpperCAmelCase							=    None
         if self.use_input_mask:
                _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				vocab_size=2							)

         _UpperCAmelCase							=    None
         if self.use_token_type_ids:
                _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				self.type_vocab_size							)

         _UpperCAmelCase							=    None
         _UpperCAmelCase							=    None
         _UpperCAmelCase							=    None
         if self.use_labels:
                _UpperCAmelCase							=    ids_tensor([self.batch_size]       ,				self.type_sequence_label_size							)
                _UpperCAmelCase							=    ids_tensor([self.batch_size, self.seq_length]       ,				self.num_labels							)
                _UpperCAmelCase							=    ids_tensor([self.batch_size]       ,				self.num_choices							)

         _UpperCAmelCase							=    self.get_config()

         return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels


  def  lowerCamelCase       (      self		:			Dict							)						->	Dict:


         """simple docstring"""
         return DebertaVaConfig(
             vocab_size=self.vocab_size       ,				hidden_size=self.hidden_size       ,				num_hidden_layers=self.num_hidden_layers       ,				num_attention_heads=self.num_attention_heads       ,				intermediate_size=self.intermediate_size       ,				hidden_act=self.hidden_act       ,				hidden_dropout_prob=self.hidden_dropout_prob       ,				attention_probs_dropout_prob=self.attention_probs_dropout_prob       ,				max_position_embeddings=self.max_position_embeddings       ,				type_vocab_size=self.type_vocab_size       ,				initializer_range=self.initializer_range       ,				relative_attention=self.relative_attention       ,				position_biased_input=self.position_biased_input       ,				pos_att_type=self.pos_att_type       ,				)


  def  lowerCamelCase       (      self		:			Union[str, Any]       ,				lowerCamelCase		:			List[Any]							)						->	Union[str, Any]:


         """simple docstring"""
         self.parent.assertListEqual(list(result.loss.size()							)       ,				[]							)


  def  lowerCamelCase       (      self		:			Optional[Any]       ,				lowerCamelCase		:			int       ,				lowerCamelCase		:			List[Any]       ,				lowerCamelCase		:			int       ,				lowerCamelCase		:			Union[str, Any]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			Any							)						->	List[Any]:


         """simple docstring"""
         _UpperCAmelCase							=    DebertaVaModel(config=lowerCamelCase							)
         model.to(lowerCamelCase							)
         model.eval()
         _UpperCAmelCase							=    model(lowerCamelCase       ,				attention_mask=lowerCamelCase       ,				token_type_ids=lowerCamelCase							)[0]
         _UpperCAmelCase							=    model(lowerCamelCase       ,				token_type_ids=lowerCamelCase							)[0]
         _UpperCAmelCase							=    model(lowerCamelCase							)[0]

         self.parent.assertListEqual(list(sequence_output.size()							)       ,				[self.batch_size, self.seq_length, self.hidden_size]							)


  def  lowerCamelCase       (      self		:			List[str]       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Optional[int]       ,				lowerCamelCase		:			int       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			List[Any]							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    DebertaVaForMaskedLM(config=lowerCamelCase							)
         model.to(lowerCamelCase							)
         model.eval()
         _UpperCAmelCase							=    model(lowerCamelCase       ,				attention_mask=lowerCamelCase       ,				token_type_ids=lowerCamelCase       ,				labels=lowerCamelCase							)

         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.seq_length, self.vocab_size)							)


  def  lowerCamelCase       (      self		:			str       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			Dict       ,				lowerCamelCase		:			List[Any]       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Any							)						->	Union[str, Any]:


         """simple docstring"""
         _UpperCAmelCase							=    self.num_labels
         _UpperCAmelCase							=    DebertaVaForSequenceClassification(lowerCamelCase							)
         model.to(lowerCamelCase							)
         model.eval()
         _UpperCAmelCase							=    model(lowerCamelCase       ,				attention_mask=lowerCamelCase       ,				token_type_ids=lowerCamelCase       ,				labels=lowerCamelCase							)
         self.parent.assertListEqual(list(result.logits.size()							)       ,				[self.batch_size, self.num_labels]							)
         self.check_loss_output(lowerCamelCase							)


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


         """simple docstring"""
         _UpperCAmelCase							=    self.num_labels
         _UpperCAmelCase							=    DebertaVaForTokenClassification(config=lowerCamelCase							)
         model.to(lowerCamelCase							)
         model.eval()
         _UpperCAmelCase							=    model(lowerCamelCase       ,				attention_mask=lowerCamelCase       ,				token_type_ids=lowerCamelCase       ,				labels=lowerCamelCase							)
         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.seq_length, self.num_labels)							)


  def  lowerCamelCase       (      self		:			Any       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Optional[int]       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			str							)						->	Tuple:


         """simple docstring"""
         _UpperCAmelCase							=    DebertaVaForQuestionAnswering(config=lowerCamelCase							)
         model.to(lowerCamelCase							)
         model.eval()
         _UpperCAmelCase							=    model(
             lowerCamelCase       ,				attention_mask=lowerCamelCase       ,				token_type_ids=lowerCamelCase       ,				start_positions=lowerCamelCase       ,				end_positions=lowerCamelCase       ,				)
         self.parent.assertEqual(result.start_logits.shape       ,				(self.batch_size, self.seq_length)							)
         self.parent.assertEqual(result.end_logits.shape       ,				(self.batch_size, self.seq_length)							)


  def  lowerCamelCase       (      self		:			Dict       ,				lowerCamelCase		:			List[str]       ,				lowerCamelCase		:			str       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			Tuple       ,				lowerCamelCase		:			Optional[Any]       ,				lowerCamelCase		:			Any       ,				lowerCamelCase		:			str							)						->	str:


         """simple docstring"""
         _UpperCAmelCase							=    DebertaVaForMultipleChoice(config=lowerCamelCase							)
         model.to(lowerCamelCase							)
         model.eval()
         _UpperCAmelCase							=    input_ids.unsqueeze(1							).expand(-1       ,				self.num_choices       ,				-1							).contiguous()
         _UpperCAmelCase							=    token_type_ids.unsqueeze(1							).expand(-1       ,				self.num_choices       ,				-1							).contiguous()
         _UpperCAmelCase							=    input_mask.unsqueeze(1							).expand(-1       ,				self.num_choices       ,				-1							).contiguous()
         _UpperCAmelCase							=    model(
             lowerCamelCase       ,				attention_mask=lowerCamelCase       ,				token_type_ids=lowerCamelCase       ,				labels=lowerCamelCase       ,				)
         self.parent.assertEqual(result.logits.shape       ,				(self.batch_size, self.num_choices)							)





  def  lowerCamelCase       (      self		:			List[str]							)						->	Optional[int]:


         """simple docstring"""
         _UpperCAmelCase							=    self.prepare_config_and_inputs()
         (
             (
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			(
             _UpperCAmelCase
         )	,			
         )							=    config_and_inputs
         _UpperCAmelCase							=    {"""input_ids""": input_ids, """token_type_ids""": token_type_ids, """attention_mask""": input_mask}
         return config, inputs_dict



@require_torch
class 		SCREAMING_SNAKE_CASE__	(  UpperCAmelCase					,      UpperCAmelCase					,      unittest.TestCase     ):

  '''simple docstring'''







  _lowerCamelCase    =  (
      (
          DebertaVaModel,
          DebertaVaForMaskedLM,
          DebertaVaForSequenceClassification,
          DebertaVaForTokenClassification,
          DebertaVaForQuestionAnswering,
          DebertaVaForMultipleChoice,
      )
      if is_torch_available()
      else ()
  )
  _lowerCamelCase    =  (
      {
          '''feature-extraction''': DebertaVaModel,
          '''fill-mask''': DebertaVaForMaskedLM,
          '''question-answering''': DebertaVaForQuestionAnswering,
          '''text-classification''': DebertaVaForSequenceClassification,
          '''token-classification''': DebertaVaForTokenClassification,
          '''zero-shot''': DebertaVaForSequenceClassification,
      }
      if is_torch_available()
      else {}
  )

  _lowerCamelCase    =  True
  _lowerCamelCase    =  False
  _lowerCamelCase    =  False
  _lowerCamelCase    =  False
  _lowerCamelCase    =  False


  def  lowerCamelCase       (      self		:			int							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    DebertaVaModelTester(self							)
         _UpperCAmelCase							=    ConfigTester(self       ,				config_class=lowerCamelCase       ,				hidden_size=37							)


  def  lowerCamelCase       (      self		:			Optional[int]							)						->	Tuple:


         """simple docstring"""
         self.config_tester.run_common_tests()


  def  lowerCamelCase       (      self		:			Tuple							)						->	Tuple:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_deberta_model(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			List[Any]							)						->	Any:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_deberta_for_sequence_classification(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			Union[str, Any]							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_deberta_for_masked_lm(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			Tuple							)						->	Tuple:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_deberta_for_question_answering(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			Dict							)						->	List[str]:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_deberta_for_token_classification(*lowerCamelCase							)


  def  lowerCamelCase       (      self		:			int							)						->	List[Any]:


         """simple docstring"""
         _UpperCAmelCase							=    self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_deberta_for_multiple_choice(*lowerCamelCase							)





  @slow
  def  lowerCamelCase       (      self		:			Dict							)						->	Optional[int]:


         """simple docstring"""
         for model_name in DEBERTA_V2_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
                _UpperCAmelCase							=    DebertaVaModel.from_pretrained(lowerCamelCase							)
                self.assertIsNotNone(lowerCamelCase							)



@require_torch
@require_sentencepiece
@require_tokenizers
class 		SCREAMING_SNAKE_CASE__	(  unittest.TestCase     ):

  '''simple docstring'''







  @unittest.skip(reason="""Model not available yet"""							)
  def  lowerCamelCase       (      self		:			Any							)						->	Tuple:


         """simple docstring"""
         pass





  @slow
  def  lowerCamelCase       (      self		:			Union[str, Any]							)						->	int:


         """simple docstring"""
         _UpperCAmelCase							=    DebertaVaModel.from_pretrained("""microsoft/deberta-v2-xlarge"""							)

         _UpperCAmelCase							=    torch.tensor([[0, 3_1414, 232, 328, 740, 1140, 1_2695, 69, 4_6078, 1588, 2]]							)
         _UpperCAmelCase							=    torch.tensor([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]							)
         with torch.no_grad():
                _UpperCAmelCase							=    model(lowerCamelCase       ,				attention_mask=lowerCamelCase							)[0]
         # compare the actual values for a slice.
         _UpperCAmelCase							=    torch.tensor(
             [[[0.2356, 0.1948, 0.0369], [-0.1063, 0.3586, -0.5152], [-0.6399, -0.0259, -0.2525]]]							)
         self.assertTrue(torch.allclose(output[:, 1:4, 1:4]       ,				lowerCamelCase       ,				atol=1E-4							)       ,				f"""{output[:, 1:4, 1:4]}"""							)