
"""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
SCREAMING_SNAKE_CASE_    					=						data_utils.TransfoXLTokenizer
SCREAMING_SNAKE_CASE_    					=						data_utils.TransfoXLCorpus
SCREAMING_SNAKE_CASE_    					=						data_utils
SCREAMING_SNAKE_CASE_    					=						data_utils




def     lowercase__						(					lowerCAmelCase				:					Union[str, Any] ,				lowerCAmelCase				:					List[str] ,				lowerCAmelCase				:					Union[str, Any] ,				lowerCAmelCase				:					Any ) ->      Dict:






    """simple docstring"""




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

        UpperCAmelCase									=					corpus.__dict__
        corpus_dict_no_vocab.pop('vocab' ,				lowerCAmelCase )
        UpperCAmelCase									=					pytorch_dump_folder_path + '/' + CORPUS_NAME
        print(F"Save dataset to {pytorch_dataset_dump_path}" )
        torch.save(lowerCAmelCase ,				lowerCAmelCase )

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

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

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


if __name__ == "__main__":
   SCREAMING_SNAKE_CASE_    					=						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.''',
   )
   SCREAMING_SNAKE_CASE_    					=						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,
   )





"""simple docstring"""

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






    """simple docstring"""




    return int((input_a, input_a).count(0 ) == 0 )




def     lowercase__						(					) ->      None:






    """simple docstring"""




    assert and_gate(0 ,				0 ) == 0
    assert and_gate(0 ,				1 ) == 0
    assert and_gate(1 ,				0 ) == 0
    assert and_gate(1 ,				1 ) == 1


if __name__ == "__main__":
   test_and_gate()
   print(and_gate(1, 0))
   print(and_gate(0, 0))
   print(and_gate(0, 1))
   print(and_gate(1, 1))



