




"""simple docstring"""






import argparse
import os

import torch

from transformers import (
    XLNetConfig,
    XLNetForQuestionAnswering,
    XLNetForSequenceClassification,
    XLNetLMHeadModel,
    load_tf_weights_in_xlnet,
)
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


lowercase__			=		{
    """cola""": 2,
    """mnli""": 3,
    """mrpc""": 2,
    """sst-2""": 2,
    """sts-b""": 1,
    """qqp""": 2,
    """qnli""": 2,
    """rte""": 2,
    """wnli""": 2,
}


logging.set_verbosity_info()







def 	_snake_case     (							lowercase__				,       lowercase__				,       lowercase__				,       lowercase__=None						):
				# Initialise PyTorch model
				_lowerCamelCase	:     List[Any]       =       XLNetConfig.from_json_file(lowercase__						)

				_lowerCamelCase	:     List[Any]       =       finetuning_task.lower() if finetuning_task is not None else ''
				if finetuning_task in GLUE_TASKS_NUM_LABELS:
								print(f'''Building PyTorch XLNetForSequenceClassification model from configuration: {config}'''						)
								_lowerCamelCase	:     List[str]       =       finetuning_task
								_lowerCamelCase	:     Dict       =       GLUE_TASKS_NUM_LABELS[finetuning_task]
								_lowerCamelCase	:     List[Any]       =       XLNetForSequenceClassification(lowercase__						)
				elif "squad" in finetuning_task:
								_lowerCamelCase	:     List[str]       =       finetuning_task
								_lowerCamelCase	:     Union[str, Any]       =       XLNetForQuestionAnswering(lowercase__						)
				else:
								_lowerCamelCase	:     Dict       =       XLNetLMHeadModel(lowercase__						)

				# Load weights from tf checkpoint
				load_tf_weights_in_xlnet(lowercase__				,       lowercase__				,       lowercase__						)

				# Save pytorch-model
				_lowerCamelCase	:     Union[str, Any]       =       os.path.join(lowercase__				,       lowercase__						)
				_lowerCamelCase	:     Any       =       os.path.join(lowercase__				,       lowercase__						)
				print(f'''Save PyTorch model to {os.path.abspath(lowercase__						)}'''						)
				torch.save(model.state_dict()				,       lowercase__						)
				print(f'''Save configuration file to {os.path.abspath(lowercase__						)}'''						)
				with open(lowercase__				,       'w'				,       encoding='utf-8'						) as f:
								f.write(config.to_json_string()						)


if __name__ == "__main__":
			lowercase__			=		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(
			    """--xlnet_config_file""",
			    default=None,
			    type=str,
			    required=True,
			    help=(
			        """The config json file corresponding to the pre-trained XLNet model. \n"""
			        """This specifies the model architecture."""
			    ),
			)
			parser.add_argument(
			    """--pytorch_dump_folder_path""",
			    default=None,
			    type=str,
			    required=True,
			    help="""Path to the folder to store the PyTorch model or dataset/vocab.""",
			)
			parser.add_argument(
			    """--finetuning_task""",
			    default=None,
			    type=str,
			    help="""Name of a task on which the XLNet TensorFlow model was fine-tuned""",
			)
			lowercase__			=		parser.parse_args()
			print(args)

			convert_xlnet_checkpoint_to_pytorch(
			    args.tf_checkpoint_path, args.xlnet_config_file, args.pytorch_dump_folder_path, args.finetuning_task
			)





"""simple docstring"""






def 	_snake_case     (							lowercase__ = 1				,       lowercase__ = 1000						):
				_lowerCamelCase	:     Optional[int]       =       1
				_lowerCamelCase	:     List[Any]       =       0

				for divide_by_number in range(lowercase__				,       digit + 1						):
								_lowerCamelCase	:     list[int]       =       []
								_lowerCamelCase	:     Dict       =       numerator
								for _ in range(1				,       digit + 1						):
												if now_divide in has_been_divided:
																if longest_list_length < len(lowercase__						):
																				_lowerCamelCase	:     Any       =       len(lowercase__						)
																				_lowerCamelCase	:     Any       =       divide_by_number
												else:
																has_been_divided.append(lowercase__						)
																_lowerCamelCase	:     int       =       now_divide * 10 % divide_by_number

				return the_digit


# Tests
if __name__ == "__main__":
			import doctest

			doctest.testmod()