





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_ (							A_    ,A_    ,A_):
    # Construct model
    if openai_config_file == "":
        UpperCamelCase__:	Optional[Any]					=     OpenAIGPTConfig()
    else:
        UpperCamelCase__:	List[Any]					=     OpenAIGPTConfig.from_json_file(A_)
    UpperCamelCase__:	Optional[Any]					=     OpenAIGPTModel(A_)

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

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


if __name__ == "__main__":
   A__:    List[str]  	=	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.'''
       ),
   )
   A__:    Union[str, Any]  	=	parser.parse_args()
   convert_openai_checkpoint_to_pytorch(
       args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
   )








def 				lowerCAmelCase_ (							A_):
    UpperCamelCase__:	Optional[int]					=     len(A_)
    for i in range(1    ,A_):
        UpperCamelCase__:	List[Any]					=     collection[i]
        UpperCamelCase__:	Tuple					=     0
        UpperCamelCase__:	Union[str, Any]					=     i - 1

        while low <= high:
            UpperCamelCase__:	Any					=     (low + high) // 2
            if val < collection[mid]:
                UpperCamelCase__:	str					=     mid - 1
            else:
                UpperCamelCase__:	str					=     mid + 1
        for j in range(A_    ,A_    ,-1):
            UpperCamelCase__:	Optional[int]					=     collection[j - 1]
        UpperCamelCase__:	Optional[Any]					=     val
    return collection


if __name__ == "__main__":
   A__:    Dict  	=	input('''Enter numbers separated by a comma:\n''').strip()
   A__:    Optional[int]  	=	[int(item) for item in user_input.split(''',''')]
   print(binary_insertion_sort(unsorted))

