
'''simple docstring'''
import os
import sys
import unittest


lowerCAmelCase					:    Tuple           = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, 'utils'))

import check_dummies  # noqa: E402
from check_dummies import create_dummy_files, create_dummy_object, find_backend, read_init  # noqa: E402


# Align TRANSFORMERS_PATH in check_dummies with the current path
lowerCAmelCase					:    int           = os.path.join(git_repo_path, 'src', 'transformers')

lowerCAmelCase					:    Optional[int]           = '\n{0} = None\n'

lowerCAmelCase					:    int           = '\nclass {0}(metaclass=DummyObject):\n    _backends = {1}\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, {1})\n'


lowerCAmelCase					:    Tuple           = '\ndef {0}(*args, **kwargs):\n    requires_backends({0}, {1})\n'


class 			SCREAMING_SNAKE_CASE__      (     unittest.TestCase):







				def 						UpperCAmelCase_    (       self     )->		Optional[Any]:







											'''simple docstring'''






											UpperCamelCase   			=     find_backend('    _import_structure["models.albert"].append("AlbertTokenizerFast")'     )
											self.assertIsNone(A_     )

											UpperCamelCase   			=     find_backend('    if not is_tokenizers_available():'     )
											self.assertEqual(A_						,				'tokenizers'     )

											UpperCamelCase   			=     find_backend('    if not is_tensorflow_text_available():'     )
											self.assertEqual(A_						,				'tensorflow_text'     )

											UpperCamelCase   			=     find_backend('    if not (is_sentencepiece_available() and is_tokenizers_available()):'     )
											self.assertEqual(A_						,				'sentencepiece_and_tokenizers'     )

											UpperCamelCase   			=     find_backend(
											    '    if not (is_sentencepiece_available() and is_tensorflow_text_available()):'     )
											self.assertEqual(A_						,				'sentencepiece_and_tensorflow_text'     )

											UpperCamelCase   			=     find_backend(
											    '    if not (is_sentencepiece_available() and is_tokenizers_available() and is_vision_available()):'     )
											self.assertEqual(A_						,				'sentencepiece_and_tokenizers_and_vision'     )







				def 						UpperCAmelCase_    (       self     )->		Tuple:







											'''simple docstring'''






											UpperCamelCase   			=     read_init()
											# We don't assert on the exact list of keys to allow for smooth grow of backend-specific objects
											self.assertIn('torch'						,				A_     )
											self.assertIn('tensorflow_text'						,				A_     )
											self.assertIn('sentencepiece_and_tokenizers'						,				A_     )

											# Likewise, we can't assert on the exact content of a key
											self.assertIn('BertModel'						,				objects['torch']     )
											self.assertIn('TFBertModel'						,				objects['tf']     )
											self.assertIn('FlaxBertModel'						,				objects['flax']     )
											self.assertIn('BertModel'						,				objects['torch']     )
											self.assertIn('TFBertTokenizer'						,				objects['tensorflow_text']     )
											self.assertIn('convert_slow_tokenizer'						,				objects['sentencepiece_and_tokenizers']     )







				def 						UpperCAmelCase_    (       self     )->		Tuple:







											'''simple docstring'''






											UpperCamelCase   			=     create_dummy_object('CONSTANT'						,				'\'torch\''     )
											self.assertEqual(A_						,				'\nCONSTANT = None\n'     )

											UpperCamelCase   			=     create_dummy_object('function'						,				'\'torch\''     )
											self.assertEqual(
											    A_						,				'\ndef function(*args, **kwargs):\n    requires_backends(function, \'torch\')\n'     )

											UpperCamelCase   			=     '\nclass FakeClass(metaclass=DummyObject):\n    _backends = \'torch\'\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, \'torch\')\n'
											UpperCamelCase   			=     create_dummy_object('FakeClass'						,				'\'torch\''     )
											self.assertEqual(A_						,				A_     )







				def 						UpperCAmelCase_    (       self     )->		int:







											'''simple docstring'''






											UpperCamelCase   			=     '# This file is autogenerated by the command `make fix-copies`, do not edit.\nfrom ..utils import DummyObject, requires_backends\n\n\nCONSTANT = None\n\n\ndef function(*args, **kwargs):\n    requires_backends(function, ["torch"])\n\n\nclass FakeClass(metaclass=DummyObject):\n    _backends = ["torch"]\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, ["torch"])\n'
											UpperCamelCase   			=     create_dummy_files({'torch': ['CONSTANT', 'function', 'FakeClass']}     )
											self.assertEqual(dummy_files['torch']						,				A_     )








'''simple docstring'''
import unittest

from transformers import AutoConfig, AutoTokenizer, BertConfig, TensorType, is_flax_available
from transformers.testing_utils import DUMMY_UNKNOWN_IDENTIFIER, require_flax, slow


if is_flax_available():
							import jax

							from transformers.models.auto.modeling_flax_auto import FlaxAutoModel
							from transformers.models.bert.modeling_flax_bert import FlaxBertModel
							from transformers.models.roberta.modeling_flax_roberta import FlaxRobertaModel






@require_flax
class 					__lowerCAmelCase   (   unittest.TestCase						):

						"""simple docstring"""






						@slow
						def 				_UpperCAmelCase       (  self							:      Dict	):
													for model_name in ["bert-base-cased", "bert-large-uncased"]:
																				with self.subTest(lowerCAmelCase	):
																											A_			    =		AutoConfig.from_pretrained(lowerCAmelCase	)
																											self.assertIsNotNone(lowerCAmelCase	)
																											self.assertIsInstance(lowerCAmelCase ,  lowerCAmelCase	)

																											A_			    =		FlaxAutoModel.from_pretrained(lowerCAmelCase	)
																											self.assertIsNotNone(lowerCAmelCase	)
																											self.assertIsInstance(lowerCAmelCase ,  lowerCAmelCase	)






						@slow
						def 				_UpperCAmelCase       (  self							:      Union[str, Any]	):
													for model_name in ["roberta-base", "roberta-large"]:
																				with self.subTest(lowerCAmelCase	):
																											A_			    =		AutoConfig.from_pretrained(lowerCAmelCase	)
																											self.assertIsNotNone(lowerCAmelCase	)
																											self.assertIsInstance(lowerCAmelCase ,  lowerCAmelCase	)

																											A_			    =		FlaxAutoModel.from_pretrained(lowerCAmelCase	)
																											self.assertIsNotNone(lowerCAmelCase	)
																											self.assertIsInstance(lowerCAmelCase ,  lowerCAmelCase	)






						@slow
						def 				_UpperCAmelCase       (  self							:      List[Any]	):
													for model_name in ["bert-base-cased", "bert-large-uncased"]:
																				A_			    =		AutoTokenizer.from_pretrained(lowerCAmelCase	)
																				A_			    =		FlaxBertModel.from_pretrained(lowerCAmelCase	)
																				A_			    =		tokenizer("Do you support jax jitted function?" ,  return_tensors=TensorType.JAX	)

																				@jax.jit
																				def eval(**lowerCAmelCase							:      Tuple	):
																											return model(**lowerCAmelCase	)

																				eval(**lowerCAmelCase	).block_until_ready()






						@slow
						def 				_UpperCAmelCase       (  self							:      str	):
													for model_name in ["roberta-base", "roberta-large"]:
																				A_			    =		AutoTokenizer.from_pretrained(lowerCAmelCase	)
																				A_			    =		FlaxRobertaModel.from_pretrained(lowerCAmelCase	)
																				A_			    =		tokenizer("Do you support jax jitted function?" ,  return_tensors=TensorType.JAX	)

																				@jax.jit
																				def eval(**lowerCAmelCase							:      Any	):
																											return model(**lowerCAmelCase	)

																				eval(**lowerCAmelCase	).block_until_ready()






						def 				_UpperCAmelCase       (  self							:      List[Any]	):
													with self.assertRaisesRegex(
													    lowerCAmelCase ,  "bert-base is not a local folder and is not a valid model identifier"	):
																				A_			    =		FlaxAutoModel.from_pretrained("bert-base"	)






						def 				_UpperCAmelCase       (  self							:      Any	):
													with self.assertRaisesRegex(
													    lowerCAmelCase ,  r"aaaaaa is not a valid git identifier \(branch name, tag name or commit id\)"	):
																				A_			    =		FlaxAutoModel.from_pretrained(lowerCAmelCase ,  revision="aaaaaa"	)






						def 				_UpperCAmelCase       (  self							:      Dict	):
													with self.assertRaisesRegex(
													    lowerCAmelCase ,  "hf-internal-testing/config-no-model does not appear to have a file named flax_model.msgpack" ,  ):
																				A_			    =		FlaxAutoModel.from_pretrained("hf-internal-testing/config-no-model"	)






						def 				_UpperCAmelCase       (  self							:      Any	):
													with self.assertRaisesRegex(lowerCAmelCase ,  "Use `from_pt=True` to load this model"	):
																				A_			    =		FlaxAutoModel.from_pretrained("hf-internal-testing/tiny-bert-pt-only"	)





