
"""simple docstring"""

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				:					Optional[int] ) ->      str:






    """simple docstring"""




    UpperCAmelCase									=					torch.load(lowerCAmelCase ,				map_location='cpu' )

    UpperCAmelCase									=					chkpt['model']

    # We have the base model one level deeper than the original XLM repository
    UpperCAmelCase									=					{}
    for k, v in state_dict.items():
        if "pred_layer" in k:
            UpperCAmelCase									=					v
        else:
            UpperCAmelCase									=					v

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

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

    # Save pytorch-model
    UpperCAmelCase									=					pytorch_dump_folder_path + '/' + WEIGHTS_NAME
    UpperCAmelCase									=					pytorch_dump_folder_path + '/' + CONFIG_NAME
    UpperCAmelCase									=					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__":
   SCREAMING_SNAKE_CASE_    					=						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.'''
   )
   SCREAMING_SNAKE_CASE_    					=						parser.parse_args()
   convert_xlm_checkpoint_to_pytorch(args.xlm_checkpoint_path, args.pytorch_dump_folder_path)





"""simple docstring"""

def     lowercase__						(					lowerCAmelCase				:					int ,				lowerCAmelCase				:					int ) ->      int:






    """simple docstring"""




    return number | (1 << position)




def     lowercase__						(					lowerCAmelCase				:					int ,				lowerCAmelCase				:					int ) ->      int:






    """simple docstring"""




    return number & ~(1 << position)




def     lowercase__						(					lowerCAmelCase				:					int ,				lowerCAmelCase				:					int ) ->      int:






    """simple docstring"""




    return number ^ (1 << position)




def     lowercase__						(					lowerCAmelCase				:					int ,				lowerCAmelCase				:					int ) ->      bool:






    """simple docstring"""




    return ((number >> position) & 1) == 1




def     lowercase__						(					lowerCAmelCase				:					int ,				lowerCAmelCase				:					int ) ->      int:






    """simple docstring"""




    return int((number & (1 << position)) != 0 )


if __name__ == "__main__":
   import doctest

   doctest.testmod()



