





import unittest

from transformers import BarthezTokenizer, BarthezTokenizerFast, BatchEncoding
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow

from ...test_tokenization_common import TokenizerTesterMixin

@require_tokenizers
@require_sentencepiece
@slow  # see https://github.com/huggingface/transformers/issues/11457
class 		UpperCamelCase__			(				lowerCAmelCase_							,				unittest.TestCase       ):



     '''simple docstring'''

     __snake_case   :     int		     =      BarthezTokenizer
     __snake_case   :     Union[str, Any]		     =      BarthezTokenizerFast
     __snake_case   :     List[Any]		     =      True
     __snake_case   :     str		     =      True






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




           '''simple docstring'''


           super().setUp()

           SCREAMING_SNAKE_CASE		=						BarthezTokenizerFast.from_pretrained("""moussaKam/mbarthez"""	)
           tokenizer.save_pretrained(self.tmpdirname	)
           tokenizer.save_pretrained(self.tmpdirname						,legacy_format=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						tokenizer






     def     SCREAMING_SNAKE_CASE__  (							self						:   Tuple	)					->		List[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						"""<pad>"""
           SCREAMING_SNAKE_CASE		=						1

           self.assertEqual(self.get_tokenizer()._convert_token_to_id(lowerCamelCase__	)						,lowerCamelCase__	)
           self.assertEqual(self.get_tokenizer()._convert_id_to_token(lowerCamelCase__	)						,lowerCamelCase__	)






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						list(self.get_tokenizer().get_vocab().keys()	)

           self.assertEqual(vocab_keys[0]						,"""<s>"""	)
           self.assertEqual(vocab_keys[1]						,"""<pad>"""	)
           self.assertEqual(vocab_keys[-1]						,"""<mask>"""	)
           self.assertEqual(len(lowerCamelCase__	)						,101122	)






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




           '''simple docstring'''


           self.assertEqual(self.get_tokenizer().vocab_size						,101122	)






     @require_torch
     def     SCREAMING_SNAKE_CASE__  (							self						:   List[str]	)					->		List[str]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						["""A long paragraph for summarization.""", """Another paragraph for summarization."""]
           SCREAMING_SNAKE_CASE		=						[0, 57, 3018, 70307, 91, 2]

           SCREAMING_SNAKE_CASE		=						self.tokenizer(
               lowerCamelCase__						,max_length=len(lowerCamelCase__	)						,padding=lowerCamelCase__						,truncation=lowerCamelCase__						,return_tensors="""pt"""	)
           self.assertIsInstance(lowerCamelCase__						,lowerCamelCase__	)

           self.assertEqual((2, 6)						,batch.input_ids.shape	)
           self.assertEqual((2, 6)						,batch.attention_mask.shape	)
           SCREAMING_SNAKE_CASE		=						batch.input_ids.tolist()[0]
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   Dict	)					->		Any:




           '''simple docstring'''


           if not self.test_rust_tokenizer:
                 return

           SCREAMING_SNAKE_CASE		=						self.get_tokenizer()
           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer()

           SCREAMING_SNAKE_CASE		=						"""I was born in 92000, and this is falsé."""

           SCREAMING_SNAKE_CASE		=						tokenizer.tokenize(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.tokenize(lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						tokenizer.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer()
           SCREAMING_SNAKE_CASE		=						tokenizer.encode(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.encode(lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)






     @slow
     def     SCREAMING_SNAKE_CASE__  (							self						:   Any	)					->		str:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						{"""input_ids""": [[0, 490, 14328, 4507, 354, 47, 43669, 95, 25, 78117, 20215, 19779, 190, 22, 400, 4, 35343, 80310, 603, 86, 24937, 105, 33438, 94762, 196, 39642, 7, 15, 15933, 173, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 10534, 87, 25, 66, 3358, 196, 55289, 8, 82961, 81, 2204, 75203, 7, 15, 763, 12956, 216, 178, 14328, 9595, 1377, 69693, 7, 448, 71021, 196, 18106, 1437, 13974, 108, 9083, 4, 49315, 7, 39, 86, 1326, 2793, 46333, 4, 448, 196, 74588, 7, 49315, 7, 39, 21, 822, 38470, 74, 21, 66723, 62480, 8, 22050, 5, 2]], """attention_mask""": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}  # noqa: E501
           # fmt: on

           # moussaKam/mbarthez is a french model. So we also use french texts.
           SCREAMING_SNAKE_CASE		=						[
               """Le transformeur est un modèle d'apprentissage profond introduit en 2017, """
               """utilisé principalement dans le domaine du traitement automatique des langues (TAL).""",
               """À l'instar des réseaux de neurones récurrents (RNN), les transformeurs sont conçus """
               """pour gérer des données séquentielles, telles que le langage naturel, pour des tâches """
               """telles que la traduction et la synthèse de texte.""",
           ]

           self.tokenizer_integration_test_util(
               expected_encoding=lowerCamelCase__						,model_name="""moussaKam/mbarthez"""						,revision="""c2e4ecbca5e3cd2c37fe1ac285ca4fbdf1366fb6"""						,sequences=lowerCamelCase__						,)









import inspect
import unittest

from transformers import RegNetConfig, is_flax_available
from transformers.testing_utils import require_flax, slow
from transformers.utils import cached_property, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_flax_common import FlaxModelTesterMixin, floats_tensor


if is_flax_available():
      import jax
      import jax.numpy as jnp

      from transformers.models.regnet.modeling_flax_regnet import FlaxRegNetForImageClassification, FlaxRegNetModel

if is_vision_available():
      from PIL import Image

      from transformers import AutoImageProcessor

class 		UpperCamelCase__			(				unittest.TestCase       ):



     '''simple docstring'''

     def __init__(							self						:   Optional[int]						,lowerCamelCase__						:   List[str]						,lowerCamelCase__						:   Optional[Any]=3						,lowerCamelCase__						:   List[str]=32						,lowerCamelCase__						:   List[Any]=3						,lowerCamelCase__						:   str=10						,lowerCamelCase__						:   Any=[10, 20, 30, 40]						,lowerCamelCase__						:   Optional[Any]=[1, 1, 2, 1]						,lowerCamelCase__						:   Union[str, Any]=True						,lowerCamelCase__						:   int=True						,lowerCamelCase__						:   Tuple="relu"						,lowerCamelCase__						:   Dict=3						,lowerCamelCase__						:   Optional[int]=None						,)					->		Optional[int]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						parent
           SCREAMING_SNAKE_CASE		=						batch_size
           SCREAMING_SNAKE_CASE		=						image_size
           SCREAMING_SNAKE_CASE		=						num_channels
           SCREAMING_SNAKE_CASE		=						embeddings_size
           SCREAMING_SNAKE_CASE		=						hidden_sizes
           SCREAMING_SNAKE_CASE		=						depths
           SCREAMING_SNAKE_CASE		=						is_training
           SCREAMING_SNAKE_CASE		=						use_labels
           SCREAMING_SNAKE_CASE		=						hidden_act
           SCREAMING_SNAKE_CASE		=						num_labels
           SCREAMING_SNAKE_CASE		=						scope
           SCREAMING_SNAKE_CASE		=						len(lowerCamelCase__	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   Tuple	)					->		Tuple:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]	)

           SCREAMING_SNAKE_CASE		=						self.get_config()

           return config, pixel_values






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




           '''simple docstring'''


           return RegNetConfig(
               num_channels=self.num_channels						,embeddings_size=self.embeddings_size						,hidden_sizes=self.hidden_sizes						,depths=self.depths						,hidden_act=self.hidden_act						,num_labels=self.num_labels						,image_size=self.image_size						,)






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						FlaxRegNetModel(config=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						model(lowerCamelCase__	)

           # Output shape (b, c, h, w)
           self.parent.assertEqual(
               result.last_hidden_state.shape						,(self.batch_size, self.hidden_sizes[-1], self.image_size // 32, self.image_size // 32)						,)






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.num_labels
           SCREAMING_SNAKE_CASE		=						FlaxRegNetForImageClassification(config=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						model(lowerCamelCase__	)
           self.parent.assertEqual(result.logits.shape						,(self.batch_size, self.num_labels)	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   str	)					->		int:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.prepare_config_and_inputs()
           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						config_and_inputs
           SCREAMING_SNAKE_CASE		=						{"""pixel_values""": pixel_values}
           return config, inputs_dict

@require_flax
class 		UpperCamelCase__			(				lowerCAmelCase_							,				unittest.TestCase       ):



     '''simple docstring'''

     __snake_case   :     Union[str, Any]		     =      (FlaxRegNetModel, FlaxRegNetForImageClassification) if is_flax_available() else ()

     __snake_case   :     Tuple		     =      False
     __snake_case   :     int		     =      False
     __snake_case   :     Tuple		     =      False






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						FlaxRegNetModelTester(self	)
           SCREAMING_SNAKE_CASE		=						ConfigTester(self						,config_class=lowerCamelCase__						,has_text_modality=lowerCamelCase__	)






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




           '''simple docstring'''


           self.create_and_test_config_common_properties()
           self.config_tester.create_and_test_config_to_json_string()
           self.config_tester.create_and_test_config_to_json_file()
           self.config_tester.create_and_test_config_from_and_save_pretrained()
           self.config_tester.create_and_test_config_with_num_labels()
           self.config_tester.check_config_can_be_init_without_params()
           self.config_tester.check_config_arguments_init()






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




           '''simple docstring'''


           return






     def     SCREAMING_SNAKE_CASE__  (							self						:   Tuple	)					->		List[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_model(*lowerCamelCase__	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   Optional[int]	)					->		int:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_for_image_classification(*lowerCamelCase__	)






     @unittest.skip(reason="""RegNet does not use inputs_embeds"""	)
     def     SCREAMING_SNAKE_CASE__  (							self						:   str	)					->		Any:




           '''simple docstring'''


           pass






     @unittest.skip(reason="""RegNet does not support input and output embeddings"""	)
     def     SCREAMING_SNAKE_CASE__  (							self						:   str	)					->		Any:




           '''simple docstring'''


           pass






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						self.model_tester.prepare_config_and_inputs_for_common()

           for model_class in self.all_model_classes:
                 SCREAMING_SNAKE_CASE		=						model_class(lowerCamelCase__	)
                 SCREAMING_SNAKE_CASE		=						inspect.signature(model.__call__	)
                 # signature.parameters is an OrderedDict => so arg_names order is deterministic
                 SCREAMING_SNAKE_CASE		=						[*signature.parameters.keys()]

                 SCREAMING_SNAKE_CASE		=						["""pixel_values"""]
                 self.assertListEqual(arg_names[:1]						,lowerCamelCase__	)






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




           '''simple docstring'''


           def check_hidden_states_output(lowerCamelCase__						:   Tuple						,lowerCamelCase__						:   Union[str, Any]						,lowerCamelCase__						:   Optional[int]	):
                 SCREAMING_SNAKE_CASE		=						model_class(lowerCamelCase__	)

                 SCREAMING_SNAKE_CASE		=						model(**self._prepare_for_class(lowerCamelCase__						,lowerCamelCase__	)	)

                 SCREAMING_SNAKE_CASE		=						outputs.encoder_hidden_states if config.is_encoder_decoder else outputs.hidden_states

                 SCREAMING_SNAKE_CASE		=						self.model_tester.num_stages
                 self.assertEqual(len(lowerCamelCase__	)						,expected_num_stages + 1	)

           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						self.model_tester.prepare_config_and_inputs_for_common()

           for model_class in self.all_model_classes:
                 SCREAMING_SNAKE_CASE		=						True
                 check_hidden_states_output(lowerCamelCase__						,lowerCamelCase__						,lowerCamelCase__	)

                 # check that output_hidden_states also work using config
                 del inputs_dict["output_hidden_states"]
                 SCREAMING_SNAKE_CASE		=						True

                 check_hidden_states_output(lowerCamelCase__						,lowerCamelCase__						,lowerCamelCase__	)






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						self.model_tester.prepare_config_and_inputs_for_common()

           for model_class in self.all_model_classes:
                 with self.subTest(model_class.__name__	):
                       SCREAMING_SNAKE_CASE		=						self._prepare_for_class(lowerCamelCase__						,lowerCamelCase__	)
                       SCREAMING_SNAKE_CASE		=						model_class(lowerCamelCase__	)

                       @jax.jit
                       def model_jitted(lowerCamelCase__						:   Dict						,**lowerCamelCase__						:   Optional[Any]	):
                             return model(pixel_values=lowerCamelCase__						,**lowerCamelCase__	)

                       with self.subTest("""JIT Enabled"""	):
                             SCREAMING_SNAKE_CASE		=						model_jitted(**lowerCamelCase__	).to_tuple()

                       with self.subTest("""JIT Disabled"""	):
                             with jax.disable_jit():
                                   SCREAMING_SNAKE_CASE		=						model_jitted(**lowerCamelCase__	).to_tuple()

                       self.assertEqual(len(lowerCamelCase__	)						,len(lowerCamelCase__	)	)
                       for jitted_output, output in zip(lowerCamelCase__						,lowerCamelCase__	):
                             self.assertEqual(jitted_output.shape						,output.shape	)



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


      '''simple docstring'''


      SCREAMING_SNAKE_CASE		=						Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""     )
      return image



@require_flax
class 		UpperCamelCase__			(				unittest.TestCase       ):



     '''simple docstring'''

     @cached_property
     def     SCREAMING_SNAKE_CASE__  (							self						:   int	)					->		str:




           '''simple docstring'''


           return AutoImageProcessor.from_pretrained("""facebook/regnet-y-040"""	) if is_vision_available() else None






     @slow
     def     SCREAMING_SNAKE_CASE__  (							self						:   Optional[int]	)					->		List[str]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						FlaxRegNetForImageClassification.from_pretrained("""facebook/regnet-y-040"""	)

           SCREAMING_SNAKE_CASE		=						self.default_image_processor
           SCREAMING_SNAKE_CASE		=						prepare_img()
           SCREAMING_SNAKE_CASE		=						image_processor(images=lowerCamelCase__						,return_tensors="""np"""	)

           SCREAMING_SNAKE_CASE		=						model(**lowerCamelCase__	)

           # verify the logits
           SCREAMING_SNAKE_CASE		=						(1, 1000)
           self.assertEqual(outputs.logits.shape						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						jnp.array([-0.4180, -1.5051, -3.4836]	)

           self.assertTrue(jnp.allclose(outputs.logits[0, :3]						,lowerCamelCase__						,atol=1e-4	)	)


