
"""simple docstring"""


from typing import TYPE_CHECKING

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


A_    							=					{
    """configuration_funnel""": ["""FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP""", """FunnelConfig"""],
    """convert_funnel_original_tf_checkpoint_to_pytorch""": [],
    """tokenization_funnel""": ["""FunnelTokenizer"""],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						A_    							=					["""FunnelTokenizerFast"""]

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						A_    							=					[
						    """FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """FunnelBaseModel""",
						    """FunnelForMaskedLM""",
						    """FunnelForMultipleChoice""",
						    """FunnelForPreTraining""",
						    """FunnelForQuestionAnswering""",
						    """FunnelForSequenceClassification""",
						    """FunnelForTokenClassification""",
						    """FunnelModel""",
						    """FunnelPreTrainedModel""",
						    """load_tf_weights_in_funnel""",
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						A_    							=					[
						    """TF_FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """TFFunnelBaseModel""",
						    """TFFunnelForMaskedLM""",
						    """TFFunnelForMultipleChoice""",
						    """TFFunnelForPreTraining""",
						    """TFFunnelForQuestionAnswering""",
						    """TFFunnelForSequenceClassification""",
						    """TFFunnelForTokenClassification""",
						    """TFFunnelModel""",
						    """TFFunnelPreTrainedModel""",
						]


if TYPE_CHECKING:
						from .configuration_funnel import FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP, FunnelConfig
						from .tokenization_funnel import FunnelTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_funnel_fast import FunnelTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_funnel import (
												    FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST,
												    FunnelBaseModel,
												    FunnelForMaskedLM,
												    FunnelForMultipleChoice,
												    FunnelForPreTraining,
												    FunnelForQuestionAnswering,
												    FunnelForSequenceClassification,
												    FunnelForTokenClassification,
												    FunnelModel,
												    FunnelPreTrainedModel,
												    load_tf_weights_in_funnel,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_funnel import (
												    TF_FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST,
												    TFFunnelBaseModel,
												    TFFunnelForMaskedLM,
												    TFFunnelForMultipleChoice,
												    TFFunnelForPreTraining,
												    TFFunnelForQuestionAnswering,
												    TFFunnelForSequenceClassification,
												    TFFunnelForTokenClassification,
												    TFFunnelModel,
												    TFFunnelPreTrainedModel,
												)

else:
						import sys

						A_    							=					_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)








import argparse

import torch

from transformers import MobileBertConfig, MobileBertForPreTraining, load_tf_weights_in_mobilebert
from transformers.utils import logging


logging.set_verbosity_info()

def      __lowercase(						UpperCAmelCase__ , UpperCAmelCase__ , UpperCAmelCase__			):


      """simple docstring"""



      lowerCamelCase             =		MobileBertConfig.from_json_file(UpperCAmelCase__			)
      print(F"""Building PyTorch model from configuration: {config}"""			)
      lowerCamelCase             =		MobileBertForPreTraining(UpperCAmelCase__			)
      # Load weights from tf checkpoint
      lowerCamelCase             =		load_tf_weights_in_mobilebert(UpperCAmelCase__ , UpperCAmelCase__ , UpperCAmelCase__			)
      # Save pytorch-model
      print(F"""Save PyTorch model to {pytorch_dump_path}"""			)
      torch.save(model.state_dict() , UpperCAmelCase__			)


if __name__ == "__main__":
     a_    :  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(
         '--mobilebert_config_file',
         default=None,
         type=str,
         required=True,
         help=(
             'The config json file corresponding to the pre-trained MobileBERT model. \n'
             'This specifies the model architecture.'
         ),
     )
     parser.add_argument(
         '--pytorch_dump_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
     )
     a_    :  List[Any]						  =		parser.parse_args()
     convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.mobilebert_config_file, args.pytorch_dump_path)