




import argparse

import torch

from transformers import ElectraConfig, ElectraForMaskedLM, ElectraForPreTraining, load_tf_weights_in_electra
from transformers.utils import logging


logging.set_verbosity_info()

def       lowerCAmelCase_      (	lowerCamelCase:							Optional[Any]  ,					lowerCamelCase:							Optional[Any]  ,					lowerCamelCase:							Optional[Any]  ,					lowerCamelCase:							int    )       ->      List[Any]:


      '''simple docstring'''




      lowerCamelCase__   	=					ElectraConfig.from_json_file(lowerCamelCase__    )
      print(f"""Building PyTorch model from configuration: {config}"""    )

      if discriminator_or_generator == "discriminator":
            lowerCamelCase__   	=					ElectraForPreTraining(lowerCamelCase__    )
      elif discriminator_or_generator == "generator":
            lowerCamelCase__   	=					ElectraForMaskedLM(lowerCamelCase__    )
      else:
            raise ValueError('The discriminator_or_generator argument should be either \'discriminator\' or \'generator\''    )

      # Load weights from tf checkpoint
      load_tf_weights_in_electra(
          lowerCamelCase__  ,					lowerCamelCase__  ,					lowerCamelCase__  ,					discriminator_or_generator=lowerCamelCase__    )

      # Save pytorch-model
      print(f"""Save PyTorch model to {pytorch_dump_path}"""    )
      torch.save(model.state_dict()  ,					lowerCamelCase__    )


if __name__ == "__main__":
      __SCREAMING_SNAKE_CASE     : 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(
          """--config_file""",
          default=None,
          type=str,
          required=True,
          help="""The config json file corresponding to the pre-trained model. \nThis specifies the model architecture.""",
      )
      parser.add_argument(
          """--pytorch_dump_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
      )
      parser.add_argument(
          """--discriminator_or_generator""",
          default=None,
          type=str,
          required=True,
          help=(
              """Whether to export the generator or the discriminator. Should be a string, either 'discriminator' or """
              """'generator'."""
          ),
      )
      __SCREAMING_SNAKE_CASE     : int      =parser.parse_args()
      convert_tf_checkpoint_to_pytorch(
          args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.discriminator_or_generator
      )
def 					__lowercase						(    lowerCamelCase__       )					->int:

  '''simple docstring'''




  if not isinstance(lowerCamelCase__			,					lowerCamelCase__       ):
    raise ValueError("double_factorial() only accepts integral values"       )
  if n < 0:
    raise ValueError("double_factorial() not defined for negative values"       )
  return 1 if n <= 1 else n * double_factorial(n - 2       )


if __name__ == "__main__":
     import doctest

     doctest.testmod()

