


"""simple docstring"""




import argparse
import os
import pickle
import sys

import torch

from transformers import TransfoXLConfig, TransfoXLLMHeadModel, load_tf_weights_in_transfo_xl
from transformers.models.transfo_xl import tokenization_transfo_xl as data_utils
from transformers.models.transfo_xl.tokenization_transfo_xl import CORPUS_NAME, VOCAB_FILES_NAMES
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()

# We do this to be able to load python 2 datasets pickles
# See e.g. https://stackoverflow.com/questions/2121874/python-pickling-after-changing-a-modules-directory/2121918#2121918
lowerCAmelCase	=							data_utils.TransfoXLTokenizer
lowerCAmelCase	=							data_utils.TransfoXLCorpus
lowerCAmelCase	=							data_utils
lowerCAmelCase	=							data_utils
def       _a			(				SCREAMING_SNAKE_CASE						,    SCREAMING_SNAKE_CASE						,    SCREAMING_SNAKE_CASE						,    SCREAMING_SNAKE_CASE					):


		"""simple docstring"""




		if transfo_xl_dataset_file:
				# Convert a pre-processed corpus (see original TensorFlow repo)
				with open(snake_case_						,    '''rb'''					) as fp:
						lowercase__						=				pickle.load(snake_case_						,    encoding='''latin1'''					)
				# Save vocabulary and dataset cache as Dictionaries (should be better than pickles for the long-term)
				lowercase__						=				pytorch_dump_folder_path + '''/''' + VOCAB_FILES_NAMES['''pretrained_vocab_file''']
				print(f'Save vocabulary to {pytorch_vocab_dump_path}'					)
				lowercase__						=				corpus.vocab.__dict__
				torch.save(snake_case_						,    snake_case_					)

				lowercase__						=				corpus.__dict__
				corpus_dict_no_vocab.pop('''vocab'''						,    snake_case_					)
				lowercase__						=				pytorch_dump_folder_path + '''/''' + CORPUS_NAME
				print(f'Save dataset to {pytorch_dataset_dump_path}'					)
				torch.save(snake_case_						,    snake_case_					)

		if tf_checkpoint_path:
				# Convert a pre-trained TensorFlow model
				lowercase__						=				os.path.abspath(snake_case_					)
				lowercase__						=				os.path.abspath(snake_case_					)

				print(f'Converting Transformer XL checkpoint from {tf_path} with config at {config_path}.'					)
				# Initialise PyTorch model
				if transfo_xl_config_file == "":
						lowercase__						=				TransfoXLConfig()
				else:
						lowercase__						=				TransfoXLConfig.from_json_file(snake_case_					)
				print(f'Building PyTorch model from configuration: {config}'					)
				lowercase__						=				TransfoXLLMHeadModel(snake_case_					)

				lowercase__						=				load_tf_weights_in_transfo_xl(snake_case_						,    snake_case_						,    snake_case_					)
				# Save pytorch-model
				lowercase__						=				os.path.join(snake_case_						,    snake_case_					)
				lowercase__						=				os.path.join(snake_case_						,    snake_case_					)
				print(f'Save PyTorch model to {os.path.abspath(snake_case_					)}'					)
				torch.save(model.state_dict()						,    snake_case_					)
				print(f'Save configuration file to {os.path.abspath(snake_case_					)}'					)
				with open(snake_case_						,    '''w'''						,    encoding='''utf-8'''					) as f:
						f.write(config.to_json_string()					)


if __name__ == "__main__":
			lowerCAmelCase	=							argparse.ArgumentParser()
			parser.add_argument(
			    '--pytorch_dump_folder_path',
			    default=None,
			    type=str,
			    required=True,
			    help='Path to the folder to store the PyTorch model or dataset/vocab.',
			)
			parser.add_argument(
			    '--tf_checkpoint_path',
			    default='',
			    type=str,
			    help='An optional path to a TensorFlow checkpoint path to be converted.',
			)
			parser.add_argument(
			    '--transfo_xl_config_file',
			    default='',
			    type=str,
			    help=(
			        'An optional config json file corresponding to the pre-trained BERT model. \n'
			        'This specifies the model architecture.'
			    ),
			)
			parser.add_argument(
			    '--transfo_xl_dataset_file',
			    default='',
			    type=str,
			    help='An optional dataset file to be converted in a vocabulary.',
			)
			lowerCAmelCase	=							parser.parse_args()
			convert_transfo_xl_checkpoint_to_pytorch(
			    args.tf_checkpoint_path,
			    args.transfo_xl_config_file,
			    args.pytorch_dump_folder_path,
			    args.transfo_xl_dataset_file,
			)






import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch


if is_torch_available():
			import torch

			from transformers.activations import gelu_new, gelu_python, get_activation


@require_torch
class 	_a							(      unittest.TestCase      ):

							def 				lowerCamelCase_			(							self:     Dict							)      ->       Any:





									"""simple docstring"""







									lowercase__						=				torch.tensor([-100, -1, -0.1, 0, 0.1, 1.0, 100]							)
									lowercase__						=				get_activation('''gelu'''							)
									self.assertTrue(torch.allclose(gelu_python(UpperCamelCase_							)   ,						torch_builtin(UpperCamelCase_							)							)							)
									self.assertFalse(torch.allclose(gelu_python(UpperCamelCase_							)   ,						gelu_new(UpperCamelCase_							)							)							)

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





									"""simple docstring"""







									lowercase__						=				torch.tensor([-100, -1, -0.1, 0, 0.1, 1.0, 100]							)
									lowercase__						=				get_activation('''gelu'''							)
									lowercase__						=				get_activation('''gelu_10'''							)

									lowercase__						=				torch_builtin(UpperCamelCase_							)
									lowercase__						=				geluaa(UpperCamelCase_							)

									lowercase__						=				torch.where(y_gelu_aa < 10.0   ,						1   ,						0							)

									self.assertTrue(torch.max(UpperCamelCase_							).item() == 10.0							)
									self.assertTrue(torch.allclose(y_gelu * clipped_mask   ,						y_gelu_aa * clipped_mask							)							)

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





									"""simple docstring"""







									get_activation('''gelu'''							)
									get_activation('''gelu_10'''							)
									get_activation('''gelu_fast'''							)
									get_activation('''gelu_new'''							)
									get_activation('''gelu_python'''							)
									get_activation('''gelu_pytorch_tanh'''							)
									get_activation('''linear'''							)
									get_activation('''mish'''							)
									get_activation('''quick_gelu'''							)
									get_activation('''relu'''							)
									get_activation('''sigmoid'''							)
									get_activation('''silu'''							)
									get_activation('''swish'''							)
									get_activation('''tanh'''							)
									with self.assertRaises(UpperCamelCase_							):
											get_activation('''bogus'''							)
									with self.assertRaises(UpperCamelCase_							):
											get_activation(UpperCamelCase_							)


							def 				lowerCamelCase_			(							self:     Tuple							)      ->       int:





									"""simple docstring"""







									lowercase__						=				get_activation('''gelu'''							)
									lowercase__						=				1
									lowercase__						=				get_activation('''gelu'''							)
									self.assertEqual(acta.a   ,						1							)
									with self.assertRaises(UpperCamelCase_							):
											lowercase__						=				acta.a


