





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  __lowerCAmelCase     :




 def __init__(						self	,				__UpperCAmelCase	,				__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	,				):



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




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    ids_tensor([self.batch_size, self.seq_length]	,				self.vocab_size				)

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

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

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

    __lowerCamelCase													=    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=__UpperCAmelCase	,				)

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




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



    '''simple docstring'''
    __lowerCamelCase													=    TFRoFormerModel(config=__UpperCAmelCase				)
    __lowerCamelCase													=    {'''input_ids''': input_ids, '''attention_mask''': input_mask, '''token_type_ids''': token_type_ids}

    __lowerCamelCase													=    [input_ids, input_mask]
    __lowerCamelCase													=    model(__UpperCAmelCase				)

    __lowerCamelCase													=    model(__UpperCAmelCase				)

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




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



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




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



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




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



    '''simple docstring'''
    __lowerCamelCase													=    self.num_labels
    __lowerCamelCase													=    TFRoFormerForSequenceClassification(config=__UpperCAmelCase				)
    __lowerCamelCase													=    {
        '''input_ids''': input_ids,
        '''attention_mask''': input_mask,
        '''token_type_ids''': token_type_ids,
    }

    __lowerCamelCase													=    model(__UpperCAmelCase				)
    self.parent.assertEqual(result.logits.shape	,				(self.batch_size, self.num_labels)				)




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



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




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



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




 def        lowerCamelCase      (						self	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



    '''simple docstring'''
    __lowerCamelCase													=    TFRoFormerForQuestionAnswering(config=__UpperCAmelCase				)
    __lowerCamelCase													=    {
        '''input_ids''': input_ids,
        '''attention_mask''': input_mask,
        '''token_type_ids''': token_type_ids,
    }

    __lowerCamelCase													=    model(__UpperCAmelCase				)
    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				):



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



@require_tf
class  __lowerCAmelCase     (	lowerCAmelCase__  ,	lowerCAmelCase__  ,	unittest.TestCase   ):
 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	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				):



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

    return False




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    TFRoFormerModelTester(self				)
    __lowerCamelCase													=    ConfigTester(self	,				config_class=__UpperCAmelCase	,				hidden_size=37				)




 def        lowerCamelCase      (						self				):



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




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_model(*__UpperCAmelCase				)




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_for_masked_lm(*__UpperCAmelCase				)




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_lm_head(*__UpperCAmelCase				)




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_for_multiple_choice(*__UpperCAmelCase				)




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_for_question_answering(*__UpperCAmelCase				)




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_for_sequence_classification(*__UpperCAmelCase				)




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_for_token_classification(*__UpperCAmelCase				)




 @slow
 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    TFRoFormerModel.from_pretrained('''junnyu/roformer_chinese_base'''				)
    self.assertIsNotNone(__UpperCAmelCase				)



@require_tf
class  __lowerCAmelCase     (	unittest.TestCase   ):




 @slow
 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    TFRoFormerForMaskedLM.from_pretrained('''junnyu/roformer_chinese_base'''				)
    __lowerCamelCase													=    tf.constant([[0, 1, 2, 3, 4, 5]]				)
    __lowerCamelCase													=    model(__UpperCAmelCase				)[0]

    # TODO Replace vocab size
    __lowerCamelCase													=    50000

    __lowerCamelCase													=    [1, 6, vocab_size]
    self.assertEqual(output.shape	,				__UpperCAmelCase				)

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

    # TODO Replace values below with what was printed above.
    __lowerCamelCase													=    tf.constant(
        [
            [
                [-0.12_053_341, -1.0_264_901, 0.29_221_946],
                [-1.5_133_783, 0.197_433, 0.15_190_607],
                [-5.0_135_403, -3.900_256, -0.84_038_764],
            ]
        ]				)
    tf.debugging.assert_near(output[:, :3, :3]	,				__UpperCAmelCase	,				atol=1E-4				)



@require_tf
class  __lowerCAmelCase     (	unittest.TestCase   ):
 lowerCAmelCase__       					=  1e-4




 def        lowerCamelCase      (						self				):



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

    __lowerCamelCase													=    emba(input_ids.shape				)
    __lowerCamelCase													=    tf.constant(
        [[0.0_000, 0.0_000, 0.0_000, 1.0_000, 1.0_000, 1.0_000], [0.8_415, 0.0_464, 0.0_022, 0.5_403, 0.9_989, 1.0_000]]				)

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




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    tf.constant(
        [
            [0.0_000, 0.0_000, 0.0_000, 0.0_000, 0.0_000],
            [0.8_415, 0.8_219, 0.8_020, 0.7_819, 0.7_617],
            [0.9_093, 0.9_364, 0.9_581, 0.9_749, 0.9_870],
        ]				)
    __lowerCamelCase													=    TFRoFormerSinusoidalPositionalEmbedding(num_positions=512	,				embedding_dim=512				)
    emba([2, 16, 512]				)
    __lowerCamelCase													=    emba.weight[:3, :5]

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



@require_tf
class  __lowerCAmelCase     (	unittest.TestCase   ):
 lowerCAmelCase__       					=  1e-4




 def        lowerCamelCase      (						self				):



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

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

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

    __lowerCamelCase							,__lowerCamelCase													=    TFRoFormerSelfAttention.apply_rotary_position_embeddings(
        __UpperCAmelCase	,				__UpperCAmelCase	,				__UpperCAmelCase				)

    __lowerCamelCase													=    tf.constant(
        [
            [0.0_000, 0.0_100, 0.0_200, 0.0_300, 0.0_400, 0.0_500, 0.0_600, 0.0_700],
            [-0.2_012, 0.8_897, 0.0_263, 0.9_401, 0.2_074, 0.9_463, 0.3_481, 0.9_343],
            [-1.7_057, 0.6_271, -1.2_145, 1.3_897, -0.6_303, 1.7_647, -0.1_173, 1.8_985],
            [-2.1_731, -1.6_397, -2.7_358, 0.2_854, -2.1_840, 1.7_183, -1.3_018, 2.4_871],
            [0.2_717, -3.6_173, -2.9_206, -2.1_988, -3.6_638, 0.3_858, -2.9_155, 2.2_980],
            [3.9_859, -2.1_580, -0.7_984, -4.4_904, -4.1_181, -2.0_252, -4.4_782, 1.1_253],
        ]				)
    __lowerCamelCase													=    tf.constant(
        [
            [0.0_000, -0.0_100, -0.0_200, -0.0_300, -0.0_400, -0.0_500, -0.0_600, -0.0_700],
            [0.2_012, -0.8_897, -0.0_263, -0.9_401, -0.2_074, -0.9_463, -0.3_481, -0.9_343],
            [1.7_057, -0.6_271, 1.2_145, -1.3_897, 0.6_303, -1.7_647, 0.1_173, -1.8_985],
            [2.1_731, 1.6_397, 2.7_358, -0.2_854, 2.1_840, -1.7_183, 1.3_018, -2.4_871],
            [-0.2_717, 3.6_173, 2.9_206, 2.1_988, 3.6_638, -0.3_858, 2.9_155, -2.2_980],
            [-3.9_859, 2.1_580, 0.7_984, 4.4_904, 4.1_181, 2.0_252, 4.4_782, -1.1_253],
        ]				)

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











from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_			=					{
    """configuration_clipseg""": [
        """CLIPSEG_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """CLIPSegConfig""",
        """CLIPSegTextConfig""",
        """CLIPSegVisionConfig""",
    ],
    """processing_clipseg""": ["""CLIPSegProcessor"""],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a_			=					[
      """CLIPSEG_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """CLIPSegModel""",
      """CLIPSegPreTrainedModel""",
      """CLIPSegTextModel""",
      """CLIPSegVisionModel""",
      """CLIPSegForImageSegmentation""",
  ]

if TYPE_CHECKING:
  from .configuration_clipseg import (
      CLIPSEG_PRETRAINED_CONFIG_ARCHIVE_MAP,
      CLIPSegConfig,
      CLIPSegTextConfig,
      CLIPSegVisionConfig,
  )
  from .processing_clipseg import CLIPSegProcessor

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_clipseg import (
        CLIPSEG_PRETRAINED_MODEL_ARCHIVE_LIST,
        CLIPSegForImageSegmentation,
        CLIPSegModel,
        CLIPSegPreTrainedModel,
        CLIPSegTextModel,
        CLIPSegVisionModel,
    )

else:
  import sys

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






