"""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


__lowerCAmelCase    :							Tuple													=						{
    '''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 							_UpperCAmelCase		(       lowerCamelCase__			,  lowerCamelCase__			,  lowerCamelCase__			,  lowerCamelCase__=None     ):





		"""simple docstring"""




		lowerCAmelCase__        =   XLNetConfig.from_json_file(lowerCAmelCase__     )

		lowerCAmelCase__        =   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__        =   finetuning_task
				lowerCAmelCase__        =   GLUE_TASKS_NUM_LABELS[finetuning_task]
				lowerCAmelCase__        =   XLNetForSequenceClassification(lowerCAmelCase__     )
		elif "squad" in finetuning_task:
				lowerCAmelCase__        =   finetuning_task
				lowerCAmelCase__        =   XLNetForQuestionAnswering(lowerCAmelCase__     )
		else:
				lowerCAmelCase__        =   XLNetLMHeadModel(lowerCAmelCase__     )

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

		# Save pytorch-model
		lowerCAmelCase__        =   os.path.join(lowerCAmelCase__			,  lowerCAmelCase__     )
		lowerCAmelCase__        =   os.path.join(lowerCAmelCase__			,  lowerCAmelCase__     )
		print(f"""Save PyTorch model to {os.path.abspath(lowerCAmelCase__     )}"""     )
		torch.save(model.state_dict()			,  lowerCAmelCase__     )
		print(f"""Save configuration file to {os.path.abspath(lowerCAmelCase__     )}"""     )
		with open(lowerCAmelCase__			,  """w"""			,  encoding="""utf-8"""     ) as f:
				f.write(config.to_json_string()     )


if __name__ == "__main__":
			__lowerCAmelCase    :							Dict													=						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",
			)
			__lowerCAmelCase    :							int													=						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 							_UpperCAmelCase		(       lowerCamelCase__ = 50     ):





		"""simple docstring"""




		lowerCAmelCase__        =   [[0] * 3 for _ in range(length + 1     )]

		for row_length in range(length + 1     ):
				for tile_length in range(2			,  5     ):
						for tile_start in range(row_length - tile_length + 1     ):
								different_colour_ways_number[row_length][tile_length - 2] += (
								    different_colour_ways_number[row_length - tile_start - tile_length][
								        tile_length - 2
								    ]
								    + 1
								)

		return sum(different_colour_ways_number[length]     )


if __name__ == "__main__":
			print(F"{solution() = }")




