




"""simple docstring"""

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


a         =      {
    '''configuration_xlm_roberta''': [
        '''XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''XLMRobertaConfig''',
        '''XLMRobertaOnnxConfig''',
    ],
}

try:
       if not is_sentencepiece_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      ['''XLMRobertaTokenizer''']

try:
       if not is_tokenizers_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      ['''XLMRobertaTokenizerFast''']

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      [
           '''XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''XLMRobertaForCausalLM''',
           '''XLMRobertaForMaskedLM''',
           '''XLMRobertaForMultipleChoice''',
           '''XLMRobertaForQuestionAnswering''',
           '''XLMRobertaForSequenceClassification''',
           '''XLMRobertaForTokenClassification''',
           '''XLMRobertaModel''',
           '''XLMRobertaPreTrainedModel''',
       ]

try:
       if not is_tf_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      [
           '''TF_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''TFXLMRobertaForCausalLM''',
           '''TFXLMRobertaForMaskedLM''',
           '''TFXLMRobertaForMultipleChoice''',
           '''TFXLMRobertaForQuestionAnswering''',
           '''TFXLMRobertaForSequenceClassification''',
           '''TFXLMRobertaForTokenClassification''',
           '''TFXLMRobertaModel''',
           '''TFXLMRobertaPreTrainedModel''',
       ]

try:
       if not is_flax_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      [
           '''FLAX_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''FlaxXLMRobertaForMaskedLM''',
           '''FlaxXLMRobertaForCausalLM''',
           '''FlaxXLMRobertaForMultipleChoice''',
           '''FlaxXLMRobertaForQuestionAnswering''',
           '''FlaxXLMRobertaForSequenceClassification''',
           '''FlaxXLMRobertaForTokenClassification''',
           '''FlaxXLMRobertaModel''',
           '''FlaxXLMRobertaPreTrainedModel''',
       ]

if TYPE_CHECKING:
       from .configuration_xlm_roberta import (
           XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP,
           XLMRobertaConfig,
           XLMRobertaOnnxConfig,
       )

       try:
              if not is_sentencepiece_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .tokenization_xlm_roberta import XLMRobertaTokenizer

       try:
              if not is_tokenizers_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .tokenization_xlm_roberta_fast import XLMRobertaTokenizerFast

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_xlm_roberta import (
                  XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
                  XLMRobertaForCausalLM,
                  XLMRobertaForMaskedLM,
                  XLMRobertaForMultipleChoice,
                  XLMRobertaForQuestionAnswering,
                  XLMRobertaForSequenceClassification,
                  XLMRobertaForTokenClassification,
                  XLMRobertaModel,
                  XLMRobertaPreTrainedModel,
              )

       try:
              if not is_tf_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_tf_xlm_roberta import (
                  TF_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
                  TFXLMRobertaForCausalLM,
                  TFXLMRobertaForMaskedLM,
                  TFXLMRobertaForMultipleChoice,
                  TFXLMRobertaForQuestionAnswering,
                  TFXLMRobertaForSequenceClassification,
                  TFXLMRobertaForTokenClassification,
                  TFXLMRobertaModel,
                  TFXLMRobertaPreTrainedModel,
              )

       try:
              if not is_flax_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_flax_xlm_roberta import (
                  FLAX_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
                  FlaxXLMRobertaForCausalLM,
                  FlaxXLMRobertaForMaskedLM,
                  FlaxXLMRobertaForMultipleChoice,
                  FlaxXLMRobertaForQuestionAnswering,
                  FlaxXLMRobertaForSequenceClassification,
                  FlaxXLMRobertaForTokenClassification,
                  FlaxXLMRobertaModel,
                  FlaxXLMRobertaPreTrainedModel,
              )

else:
       import sys

       a         =      _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)







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


a         =      {
    '''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					( _snake_case							: str    ,  _snake_case							: Optional[int]    ,  _snake_case							: List[Any]    ,  _snake_case							: Tuple=None							)   -> List[str]:






      '''simple docstring'''


      _A        =       XLNetConfig.from_json_file(_snake_case							)

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

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

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


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

