






import argparse

import torch

from transformers import OpenAIGPTConfig, OpenAIGPTModel, load_tf_weights_in_openai_gpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()





def       __lowerCAmelCase      (						__snake_case					, __snake_case					, __snake_case       ):
     # Construct model
     if openai_config_file == "":
          __lowerCAmelCase								=					OpenAIGPTConfig()
     else:
          __lowerCAmelCase								=					OpenAIGPTConfig.from_json_file(__snake_case       )
     __lowerCAmelCase								=					OpenAIGPTModel(__snake_case       )

     # Load weights from numpy
     load_tf_weights_in_openai_gpt(__snake_case					, __snake_case					, __snake_case       )

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


if __name__ == "__main__":
 lowerCamelCase			:					Optional[Any]         =	argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     '''--openai_checkpoint_folder_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(
     '''--openai_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			:					Tuple         =	parser.parse_args()
 convert_openai_checkpoint_to_pytorch(
     args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
 )







def       __lowerCAmelCase      (						__snake_case					, __snake_case       ):
     if not isinstance(__snake_case					, __snake_case       ):
          raise ValueError("iterations must be defined as integers"       )
     if not isinstance(__snake_case					, __snake_case       ) or not number >= 1:
          raise ValueError(
              "starting number must be\n                         and integer and be more than 0"       )
     if not iterations >= 1:
          raise ValueError("Iterations must be done more than 0 times to play FizzBuzz"       )

     __lowerCAmelCase								=					""
     while number <= iterations:
          if number % 3 == 0:
               out += "Fizz"
          if number % 5 == 0:
               out += "Buzz"
          if 0 not in (number % 3, number % 5):
               out += str(__snake_case       )

          # print(out)
          number += 1
          out += " "
     return out


if __name__ == "__main__":
 import doctest

 doctest.testmod()






