





from __future__ import annotations

def       A__(		__lowerCAmelCase	,			__lowerCAmelCase	,			__lowerCAmelCase ):
				if len(__lowerCAmelCase ) == 0:
								raise ValueError('find_max() arg is an empty sequence' )
				if (
				    left >= len(__lowerCAmelCase )
				    or left < -len(__lowerCAmelCase )
				    or right >= len(__lowerCAmelCase )
				    or right < -len(__lowerCAmelCase )
				):
								raise IndexError('list index out of range' )
				if left == right:
								return nums[left]
				_snake_case :			int  						=   (left + right) >> 1  # the middle
				_snake_case :			List[str]  						=   find_max(__lowerCAmelCase	,			__lowerCAmelCase	,			__lowerCAmelCase )  # find max in range[left, mid]
				_snake_case :			int  						=   find_max(__lowerCAmelCase	,			mid + 1	,			__lowerCAmelCase )  # find max in range[mid + 1, right]

				return left_max if left_max >= right_max else right_max


if __name__ == "__main__":
		import doctest

		doctest.testmod(verbose=True)













import argparse

import torch

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


logging.set_verbosity_info()

def       A__(		__lowerCAmelCase	,			__lowerCAmelCase	,			__lowerCAmelCase ):
				# Initialise PyTorch model
				_snake_case :			Optional[int]  						=   BertConfig.from_json_file(__lowerCAmelCase )
				print(F'''Building PyTorch model from configuration: {config}''' )
				_snake_case :			List[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__":
		lowercase_		:				Any				=						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.'''
		)
		lowercase_		:				List[str]				=						parser.parse_args()
		convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.bert_config_file, args.pytorch_dump_path)






