


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


__UpperCAmelCase    :Optional[int]				       =     {
    "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 			_a			(		_lowercase      :			List[Any]    ,      _lowercase      :			Tuple    ,      _lowercase      :			int    ,      _lowercase      :			Optional[int]=None						):





     '''simple docstring'''






     __UpperCAmelCase			:				Tuple													=    XLNetConfig.from_json_file(_lowercase						)

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

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

     # Save pytorch-model
     __UpperCAmelCase			:				Tuple													=    os.path.join(_lowercase    ,      _lowercase						)
     __UpperCAmelCase			:				Optional[int]													=    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__":
      __UpperCAmelCase    :Any				       =     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",
      )
      __UpperCAmelCase    :List[str]				       =     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 			_a			(		_lowercase      :			list[list[int]]    ,      _lowercase      :			int    ,      _lowercase      :			int    ,      _lowercase      :			set						):





     '''simple docstring'''






     __UpperCAmelCase							,     __UpperCAmelCase			:				Any													=    len(_lowercase						), len(grid[0]						)
     if (
         min(_lowercase    ,      _lowercase						) < 0
         or row == row_length
         or col == col_length
         or (row, col) in visit
         or grid[row][col] == 1
     ):
          return 0
     if row == row_length - 1 and col == col_length - 1:
          return 1

     visit.add((row, col)						)

     __UpperCAmelCase			:				Optional[Any]													=    0
     count += depth_first_search(_lowercase    ,      row + 1    ,      _lowercase    ,      _lowercase						)
     count += depth_first_search(_lowercase    ,      row - 1    ,      _lowercase    ,      _lowercase						)
     count += depth_first_search(_lowercase    ,      _lowercase    ,      col + 1    ,      _lowercase						)
     count += depth_first_search(_lowercase    ,      _lowercase    ,      col - 1    ,      _lowercase						)

     visit.remove((row, col)						)
     return count


if __name__ == "__main__":
      import doctest

      doctest.testmod()