import argparse
import json

import numpy
import torch

from transformers.models.xlm.tokenization_xlm import VOCAB_FILES_NAMES
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()





def    __lowercase     (						lowerCamelCase					:     Any  ,  lowerCamelCase					:     Any	):
 # Load checkpoint
 UpperCamelCase_					:						Any =					torch.load(lowerCamelCase  ,  map_location='cpu'	)

 UpperCamelCase_					:						List[Any] =					chkpt['model']

 # We have the base model one level deeper than the original XLM repository
 UpperCamelCase_					:						int =					{}
 for k, v in state_dict.items():
  if "pred_layer" in k:
   UpperCamelCase_					:						List[Any] =					v
  else:
   UpperCamelCase_					:						Union[str, Any] =					v

 UpperCamelCase_					:						List[str] =					chkpt['params']
 UpperCamelCase_					:						List[str] =					{n: v for n, v in config.items() if not isinstance(lowerCamelCase  ,  (torch.FloatTensor, numpy.ndarray)	)}

 UpperCamelCase_					:						int =					chkpt['dico_word2id']
 UpperCamelCase_					:						Dict =					{s + '</w>' if s.find('@@'	) == -1 and i > 13 else s.replace('@@'  ,  ''	): i for s, i in vocab.items()}

 # Save pytorch-model
 UpperCamelCase_					:						Dict =					pytorch_dump_folder_path + '/' + WEIGHTS_NAME
 UpperCamelCase_					:						Optional[Any] =					pytorch_dump_folder_path + '/' + CONFIG_NAME
 UpperCamelCase_					:						Optional[int] =					pytorch_dump_folder_path + '/' + VOCAB_FILES_NAMES['vocab_file']

 print(F"Save PyTorch model to {pytorch_weights_dump_path}"	)
 torch.save(lowerCamelCase  ,  lowerCamelCase	)

 print(F"Save configuration file to {pytorch_config_dump_path}"	)
 with open(lowerCamelCase  ,  'w'  ,  encoding='utf-8'	) as f:
  f.write(json.dumps(lowerCamelCase  ,  indent=2	) + '\n'	)

 print(F"Save vocab file to {pytorch_config_dump_path}"	)
 with open(lowerCamelCase  ,  'w'  ,  encoding='utf-8'	) as f:
  f.write(json.dumps(lowerCamelCase  ,  indent=2	) + '\n'	)


if __name__ == "__main__":
   a_    					=       argparse.ArgumentParser()
   # Required parameters
   parser.add_argument(
       '--xlm_checkpoint_path', default=None, type=str, required=True, help='Path the official PyTorch dump.'
   )
   parser.add_argument(
       '--pytorch_dump_folder_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
   )
   a_    					=       parser.parse_args()
   convert_xlm_checkpoint_to_pytorch(args.xlm_checkpoint_path, args.pytorch_dump_folder_path)




from maths.prime_check import is_prime





def    __lowercase     (						lowerCamelCase					:     int	):
 if not isinstance(lowerCamelCase  ,  lowerCamelCase	):
  UpperCamelCase_					:						List[str] =					F"Input value of [number={number}] must be an integer"
  raise TypeError(lowerCamelCase	)
 if is_prime(lowerCamelCase	) and is_prime(number + 2	):
  return number + 2
 else:
  return -1


if __name__ == "__main__":
   import doctest

   doctest.testmod()



