'''simple docstring'''


import argparse

import torch

from transformers import GPTaConfig, GPTaModel, load_tf_weights_in_gpta
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()







def    _lowerCamelCase  (__lowerCamelCase  :     Tuple					,  __lowerCamelCase  :     str					,  __lowerCamelCase  :     Dict     )   ->    Optional[Any]:






			if gpta_config_file == "":
						a__     = GPTaConfig()
			else:
						a__     = GPTaConfig.from_json_file(UpperCAmelCase__     )
			a__     = GPTaModel(UpperCAmelCase__     )

			# Load weights from numpy
			load_tf_weights_in_gpta(UpperCAmelCase__					,  UpperCAmelCase__					,  UpperCAmelCase__     )

			# Save pytorch-model
			a__     = pytorch_dump_folder_path + "/" + WEIGHTS_NAME
			a__     = pytorch_dump_folder_path + "/" + CONFIG_NAME
			print(f'''Save PyTorch model to {pytorch_weights_dump_path}'''     )
			torch.save(model.state_dict()					,  UpperCAmelCase__     )
			print(f'''Save configuration file to {pytorch_config_dump_path}'''     )
			with open(UpperCAmelCase__					,  "w"					,  encoding="utf-8"     ) as f:
						f.write(config.to_json_string()     )


if __name__ == "__main__":
		lowerCAmelCase_   :   List[str]       =					argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    "--gpt2_checkpoint_path", default=None, type=str, required=True, help="Path to the TensorFlow checkpoint path."
		)
		parser.add_argument(
		    "--pytorch_dump_folder_path", default=None, type=str, required=True, help="Path to the output PyTorch model."
		)
		parser.add_argument(
		    "--gpt2_config_file",
		    default="",
		    type=str,
		    help=(
		        "An optional config json file corresponding to the pre-trained OpenAI model. \n"
		        "This specifies the model architecture."
		    ),
		)
		lowerCAmelCase_   :   Dict       =					parser.parse_args()
		convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)










'''simple docstring'''


def    _lowerCamelCase  (__lowerCamelCase  :     str     )   ->    bool:
			a__     = 0
			for ch in input_str:
						a__     = ord(__lowerCamelCase     )
						a__     = pow(2					,  __lowerCamelCase     )

						# If we already turned on bit for current character's unicode
						if bitmap >> ch_unicode & 1 == 1:
									return False
						bitmap |= ch_bit_index_on
			return True


if __name__ == "__main__":
		import doctest

		doctest.testmod()



