





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       UpperCAmelCase							(     _lowerCamelCase      :  Optional[Any]			,   _lowerCamelCase      :  str			,   _lowerCamelCase      :  List[str]     ):





						'''simple docstring'''


						if gpta_config_file == "":
												SCREAMING_SNAKE_CASE__     :				Optional[Any]   =					GPTaConfig()
						else:
												SCREAMING_SNAKE_CASE__     :				Dict   =					GPTaConfig.from_json_file(_lowerCamelCase     )
						SCREAMING_SNAKE_CASE__     :				Optional[Any]   =					GPTaModel(_lowerCamelCase     )

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

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


if __name__ == "__main__":
				__lowercase       :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."
				    ),
				)
				__lowercase       :Optional[int]       =  parser.parse_args()
				convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)






from __future__ import annotations

from fractions import Fraction







def       UpperCAmelCase							(     _lowerCamelCase      :  int			,   _lowerCamelCase      :  int     ):





						'''simple docstring'''


						return (
						    num != den and num % 10 == den // 10 and (num // 10) / (den % 10) == num / den
						)







def       UpperCAmelCase							(     _lowerCamelCase      :  int     ):





						'''simple docstring'''


						SCREAMING_SNAKE_CASE__     :				int   =					[]
						SCREAMING_SNAKE_CASE__     :				str   =					11
						SCREAMING_SNAKE_CASE__     :				Any   =					int("1" + "0" * digit_len     )
						for num in range(_lowerCamelCase			,   _lowerCamelCase     ):
												while den <= 99:
																		if (num != den) and (num % 10 == den // 10) and (den % 10 != 0):
																								if is_digit_cancelling(_lowerCamelCase			,   _lowerCamelCase     ):
																														solutions.append(f"""{num}/{den}"""     )
																		den += 1
												num += 1
												SCREAMING_SNAKE_CASE__     :				str   =					10
						return solutions







def       UpperCAmelCase							(     _lowerCamelCase      :  int = 2     ):





						'''simple docstring'''


						SCREAMING_SNAKE_CASE__     :				Optional[int]   =					1.0
						for fraction in fraction_list(_lowerCamelCase     ):
												SCREAMING_SNAKE_CASE__     :				Any   =					Fraction(_lowerCamelCase     )
												result *= frac.denominator / frac.numerator
						return int(_lowerCamelCase     )


if __name__ == "__main__":
				print(solution())