





import argparse

import torch

from transformers import BertConfig, BertForPreTraining, load_tf_weights_in_bert
from transformers.utils import logging


logging.set_verbosity_info()

def    __snake_case  (    _lowerCAmelCase       :       Optional[Any] , _lowerCAmelCase       :       int , _lowerCAmelCase       :       int		)       ->  Union[str, Any]:
   # Initialise PyTorch model
   A_    : Dict								=	BertConfig.from_json_file(_lowerCAmelCase		)
   print(f"Building PyTorch model from configuration: {config}"		)
   A_    : str								=	BertForPreTraining(_lowerCAmelCase		)

   # Load weights from tf checkpoint
   load_tf_weights_in_bert(_lowerCAmelCase , _lowerCAmelCase , _lowerCAmelCase		)

   # Save pytorch-model
   print(f"Save PyTorch model to {pytorch_dump_path}"		)
   torch.save(model.state_dict() , _lowerCAmelCase		)


if __name__ == "__main__":
 _lowerCAmelCase							:					List[str]		    =		argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     '''--tf_checkpoint_path''', default=None, type=str, required=True, help='''Path to the TensorFlow checkpoint path.'''
 )
 parser.add_argument(
     '''--bert_config_file''',
     default=None,
     type=str,
     required=True,
     help=(
         '''The config json file corresponding to the pre-trained BERT model. \n'''
         '''This specifies the model architecture.'''
     ),
 )
 parser.add_argument(
     '''--pytorch_dump_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
 )
 _lowerCAmelCase							:					Tuple		    =		parser.parse_args()
 convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.bert_config_file, args.pytorch_dump_path)







def  _SCREAMING_SNAKE_CASE				(   a  )      ->      str:
					if number > 0:
										raise ValueError('input must be a negative integer'  )
					__A	:						Optional[int]       =				len(bin(a  )[3:]  )
					__A	:						Dict       =				bin(abs(a  ) - (1 << binary_number_length)  )[3:]
					__A	:						int       =				(
					    (
					        '1'
					        + '0' * (binary_number_length - len(a  ))
					        + twos_complement_number
					    )
					    if number < 0
					    else '0'
					)
					return "0b" + twos_complement_number


if __name__ == "__main__":
				import doctest

				doctest.testmod()




