



"""simple docstring"""






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 	snake_case__  (						__lowerCamelCase							:       Optional[Any]				,						__lowerCamelCase							:       int				,						__lowerCamelCase							:       str				,						__lowerCamelCase							:       List[Any]      ):
			"""simple docstring"""
			lowerCamelCase__						:						Optional[Any]						      =ElectraConfig.from_json_file(snake_case_      )
			print(f'''Building PyTorch model from configuration: {config}'''      )

			if discriminator_or_generator == "discriminator":
						lowerCamelCase__						:						Union[str, Any]						      =ElectraForPreTraining(snake_case_      )
			elif discriminator_or_generator == "generator":
						lowerCamelCase__						:						Any						      =ElectraForMaskedLM(snake_case_      )
			else:
						raise ValueError('''The discriminator_or_generator argument should be either \'discriminator\' or \'generator\''''      )

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

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


if __name__ == "__main__":
		_lowercase					:					Tuple 		=		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\'."
		    ),
		)
		_lowercase					:					Optional[int] 		=		parser.parse_args()
		convert_tf_checkpoint_to_pytorch(
		    args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.discriminator_or_generator
		)






from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


snake_case_      :					Any				      =     {
    'configuration_imagegpt': ['IMAGEGPT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ImageGPTConfig', 'ImageGPTOnnxConfig']
}

try:
	if not is_vision_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	snake_case_      :					str				      =     ['ImageGPTFeatureExtractor']
	snake_case_      :					Optional[int]				      =     ['ImageGPTImageProcessor']

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	snake_case_      :					List[str]				      =     [
	    'IMAGEGPT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'ImageGPTForCausalImageModeling',
	    'ImageGPTForImageClassification',
	    'ImageGPTModel',
	    'ImageGPTPreTrainedModel',
	    'load_tf_weights_in_imagegpt',
	]


if TYPE_CHECKING:
	from .configuration_imagegpt import IMAGEGPT_PRETRAINED_CONFIG_ARCHIVE_MAP, ImageGPTConfig, ImageGPTOnnxConfig

	try:
		if not is_vision_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .feature_extraction_imagegpt import ImageGPTFeatureExtractor
		from .image_processing_imagegpt import ImageGPTImageProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_imagegpt import (
		    IMAGEGPT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    ImageGPTForCausalImageModeling,
		    ImageGPTForImageClassification,
		    ImageGPTModel,
		    ImageGPTPreTrainedModel,
		    load_tf_weights_in_imagegpt,
		)

else:
	import sys

	snake_case_      :					Dict				      =     _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)
