






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


snake_case     				=		{
    "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   lowerCamelCase__			(     lowercase						,     lowercase						,     lowercase						,     lowercase=None				):

  """simple docstring"""






  SCREAMING_SNAKE_CASE       :      Tuple							=    XLNetConfig.from_json_file(__A				)

  SCREAMING_SNAKE_CASE       :      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}'''				)
    SCREAMING_SNAKE_CASE       :      int							=    finetuning_task
    SCREAMING_SNAKE_CASE       :      Union[str, Any]							=    GLUE_TASKS_NUM_LABELS[finetuning_task]
    SCREAMING_SNAKE_CASE       :      int							=    XLNetForSequenceClassification(__A				)
  elif "squad" in finetuning_task:
    SCREAMING_SNAKE_CASE       :      Dict							=    finetuning_task
    SCREAMING_SNAKE_CASE       :      Optional[Any]							=    XLNetForQuestionAnswering(__A				)
  else:
    SCREAMING_SNAKE_CASE       :      Any							=    XLNetLMHeadModel(__A				)

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

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


if __name__ == "__main__":
   snake_case     				=		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""",
   )
   snake_case     				=		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
   )














def   lowerCamelCase__			(     lowercase						,     lowercase				):

  """simple docstring"""






  return numa ^ numa < 0


if __name__ == "__main__":
   import doctest

   doctest.testmod()






