
"""simple docstring"""

from __future__ import annotations

import unittest

from transformers import 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 (
          TF_XLM_PRETRAINED_MODEL_ARCHIVE_LIST,
          TFXLMForMultipleChoice,
          TFXLMForQuestionAnsweringSimple,
          TFXLMForSequenceClassification,
          TFXLMForTokenClassification,
          TFXLMModel,
          TFXLMWithLMHeadModel,
          XLMConfig,
      )

class __lowerCAmelCase						:





     def __init__(      self      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




      __UpperCamelCase							    =			parent
      __UpperCamelCase							    =			13
      __UpperCamelCase							    =			7
      __UpperCamelCase							    =			True
      __UpperCamelCase							    =			True
      __UpperCamelCase							    =			True
      __UpperCamelCase							    =			True
      __UpperCamelCase							    =			True
      __UpperCamelCase							    =			False
      __UpperCamelCase							    =			False
      __UpperCamelCase							    =			False
      __UpperCamelCase							    =			2
      __UpperCamelCase							    =			99
      __UpperCamelCase							    =			0
      __UpperCamelCase							    =			32
      __UpperCamelCase							    =			2
      __UpperCamelCase							    =			4
      __UpperCamelCase							    =			0.1
      __UpperCamelCase							    =			0.1
      __UpperCamelCase							    =			512
      __UpperCamelCase							    =			16
      __UpperCamelCase							    =			2
      __UpperCamelCase							    =			0.0_2
      __UpperCamelCase							    =			3
      __UpperCamelCase							    =			4
      __UpperCamelCase							    =			'last'
      __UpperCamelCase							    =			True
      __UpperCamelCase							    =			None
      __UpperCamelCase							    =			0





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			ids_tensor([self.batch_size, self.seq_length]      ,	self.vocab_size )
      __UpperCamelCase							    =			random_attention_mask([self.batch_size, self.seq_length]      ,	dtype=tf.floataa )

      __UpperCamelCase							    =			None
      if self.use_input_lengths:
       __UpperCamelCase							    =			(
           ids_tensor([self.batch_size]      ,	vocab_size=2 ) + self.seq_length - 2
       )  # small variation of seq_length

      __UpperCamelCase							    =			None
      if self.use_token_type_ids:
       __UpperCamelCase							    =			ids_tensor([self.batch_size, self.seq_length]      ,	self.n_langs )

      __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]      ,	2      ,	dtype=tf.floataa )
       __UpperCamelCase							    =			ids_tensor([self.batch_size]      ,	self.num_choices )

      __UpperCamelCase							    =			XLMConfig(
          vocab_size=self.vocab_size      ,	n_special=self.n_special      ,	emb_dim=self.hidden_size      ,	n_layers=self.num_hidden_layers      ,	n_heads=self.num_attention_heads      ,	dropout=self.hidden_dropout_prob      ,	attention_dropout=self.attention_probs_dropout_prob      ,	gelu_activation=self.gelu_activation      ,	sinusoidal_embeddings=self.sinusoidal_embeddings      ,	asm=self.asm      ,	causal=self.causal      ,	n_langs=self.n_langs      ,	max_position_embeddings=self.max_position_embeddings      ,	initializer_range=self.initializer_range      ,	summary_type=self.summary_type      ,	use_proj=self.use_proj      ,	bos_token_id=self.bos_token_id      ,	)

      return (
          config,
          input_ids,
          token_type_ids,
          input_lengths,
          sequence_labels,
          token_labels,
          is_impossible_labels,
          choice_labels,
          input_mask,
      )





     def 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




      __UpperCamelCase							    =			TFXLMModel(config=__UpperCAmelCase )
      __UpperCamelCase							    =			{'input_ids': input_ids, 'lengths': input_lengths, 'langs': token_type_ids}
      __UpperCamelCase							    =			model(__UpperCAmelCase )

      __UpperCamelCase							    =			[input_ids, input_mask]
      __UpperCamelCase							    =			model(__UpperCAmelCase )
      self.parent.assertEqual(result.last_hidden_state.shape      ,	(self.batch_size, self.seq_length, self.hidden_size) )





     def 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




      __UpperCamelCase							    =			TFXLMWithLMHeadModel(__UpperCAmelCase )

      __UpperCamelCase							    =			{'input_ids': input_ids, 'lengths': input_lengths, 'langs': token_type_ids}
      __UpperCamelCase							    =			model(__UpperCAmelCase )

      __UpperCamelCase							    =			outputs

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





     def 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




      __UpperCamelCase							    =			TFXLMForQuestionAnsweringSimple(__UpperCAmelCase )

      __UpperCamelCase							    =			{'input_ids': input_ids, 'lengths': input_lengths}

      __UpperCamelCase							    =			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 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




      __UpperCamelCase							    =			TFXLMForSequenceClassification(__UpperCAmelCase )

      __UpperCamelCase							    =			{'input_ids': input_ids, 'lengths': input_lengths}

      __UpperCamelCase							    =			model(__UpperCAmelCase )

      self.parent.assertEqual(result.logits.shape      ,	(self.batch_size, self.type_sequence_label_size) )





     def 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




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





     def 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	):

      '''simple docstring'''




      __UpperCamelCase							    =			self.num_choices
      __UpperCamelCase							    =			TFXLMForMultipleChoice(config=__UpperCAmelCase )
      __UpperCamelCase							    =			tf.tile(tf.expand_dims(__UpperCAmelCase      ,	1 )      ,	(1, self.num_choices, 1) )
      __UpperCamelCase							    =			tf.tile(tf.expand_dims(__UpperCAmelCase      ,	1 )      ,	(1, self.num_choices, 1) )
      __UpperCamelCase							    =			tf.tile(tf.expand_dims(__UpperCAmelCase      ,	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(__UpperCAmelCase )
      self.parent.assertEqual(result.logits.shape      ,	(self.batch_size, self.num_choices) )







     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.prepare_config_and_inputs()
      (
          (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      (
          __UpperCamelCase
      )    ,      
      )							    =			config_and_inputs
      __UpperCamelCase							    =			{
          'input_ids': input_ids,
          'token_type_ids': token_type_ids,
          'langs': token_type_ids,
          'lengths': input_lengths,
      }
      return config, inputs_dict


@require_tf
class __lowerCAmelCase						( __SCREAMING_SNAKE_CASE     ,    __SCREAMING_SNAKE_CASE     ,    unittest.TestCase     ):
     lowercase		  =		(
         (
             TFXLMModel,
             TFXLMWithLMHeadModel,
             TFXLMForSequenceClassification,
             TFXLMForQuestionAnsweringSimple,
             TFXLMForTokenClassification,
             TFXLMForMultipleChoice,
         )
         if is_tf_available()
         else ()
     )
     lowercase		  =		(
         (TFXLMWithLMHeadModel,) if is_tf_available() else ()
     )  # TODO (PVP): Check other models whether language generation is also applicable
     lowercase		  =		(
         {
             "feature-extraction": TFXLMModel,
             "fill-mask": TFXLMWithLMHeadModel,
             "question-answering": TFXLMForQuestionAnsweringSimple,
             "text-classification": TFXLMForSequenceClassification,
             "text-generation": TFXLMWithLMHeadModel,
             "token-classification": TFXLMForTokenClassification,
             "zero-shot": TFXLMForSequenceClassification,
         }
         if is_tf_available()
         else {}
     )
     lowercase		  =		False
     lowercase		  =		False





     def 		UpperCAmelCase   (      self      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase      ,	__UpperCAmelCase ):

      '''simple docstring'''




      if (
          pipeline_test_casse_name == "QAPipelineTests"
          and tokenizer_name is not None
          and not tokenizer_name.endswith('Fast' )
      ):
       # `QAPipelineTests` fails for a few models when the slower tokenizer are used.
       # (The slower tokenizers were never used for pipeline tests before the pipeline testing rework)
       # TODO: check (and possibly fix) the `QAPipelineTests` with slower tokenizer
       return True

      return False





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			TFXLMModelTester(self )
      __UpperCamelCase							    =			ConfigTester(self      ,	config_class=__UpperCAmelCase      ,	emb_dim=37 )





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      self.config_tester.run_common_tests()





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_xlm_model(*__UpperCAmelCase )





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_xlm_lm_head(*__UpperCAmelCase )





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_xlm_qa(*__UpperCAmelCase )





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_xlm_sequence_classif(*__UpperCAmelCase )





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_xlm_for_token_classification(*__UpperCAmelCase )





     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_xlm_for_multiple_choice(*__UpperCAmelCase )







     @slow
     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      for model_name in TF_XLM_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
       __UpperCamelCase							    =			TFXLMModel.from_pretrained(__UpperCAmelCase )
       self.assertIsNotNone(__UpperCAmelCase )


@require_tf
class __lowerCAmelCase						( unittest.TestCase     ):





     @slow
     def 		UpperCAmelCase   (      self ):

      '''simple docstring'''




      __UpperCamelCase							    =			TFXLMWithLMHeadModel.from_pretrained('xlm-mlm-en-2048' )
      __UpperCamelCase							    =			tf.convert_to_tensor([[14, 447]]      ,	dtype=tf.intaa )  # the president
      __UpperCamelCase							    =			[
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
          14,
          447,
      ]  # the president the president the president the president the president the president the president the president the president the president
      # TODO(PVP): this and other input_ids I tried for generation give pretty bad results. Not sure why. Model might just not be made for auto-regressive inference
      __UpperCamelCase							    =			model.generate(__UpperCAmelCase      ,	do_sample=__UpperCAmelCase )
      self.assertListEqual(output_ids[0].numpy().tolist()      ,	__UpperCAmelCase )





"""simple docstring"""

UpperCamelCase      :							int          =					1_0**8






def 				A		(							snake_case :int						) ->      bool:
 if n % 1_0 == 0:
  return False
 __UpperCamelCase							    =			str(snake_case						)
 return s == s[::-1]






def 				A		(							) ->      int:
 __UpperCamelCase							    =			set()
 __UpperCamelCase							    =			1
 __UpperCamelCase							    =			5
 while sum_squares < LIMIT:
  __UpperCamelCase							    =			first_square + 1
  while sum_squares < LIMIT:
   if is_palindrome(snake_case						):
    answer.add(snake_case						)
   last_square += 1
   sum_squares += last_square**2
  first_square += 1
  __UpperCamelCase							    =			first_square**2 + (first_square + 1) ** 2

 return sum(snake_case						)


if __name__ == "__main__":
      print(solution())



