



'''simple docstring'''



import warnings

from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding






class 			_SCREAMING_SNAKE_CASE				(lowercase__      ):
			A__								=  ['image_processor', 'tokenizer']
			A__								=  'AutoImageProcessor'
			A__								=  'AutoTokenizer'



			def __init__(     self		:						int    ,			__UpperCamelCase		:						int=None    ,			__UpperCamelCase		:						Any=None    ,			**__UpperCamelCase		:						str			)      ->      Optional[int]:
							"""simple docstring"""





							snake_case__      :   Optional[Any]      =    None
							if "feature_extractor" in kwargs:
											warnings.warn(
											    '''The `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor`'''
											    ''' instead.'''    ,			__UpperCamelCase    ,			)
											snake_case__      :   List[str]      =    kwargs.pop('''feature_extractor'''			)

							snake_case__      :   Any      =    image_processor if image_processor is not None else feature_extractor
							if image_processor is None:
											raise ValueError('''You have to specify an image_processor.'''			)
							if tokenizer is None:
											raise ValueError('''You have to specify a tokenizer.'''			)

							super().__init__(__UpperCamelCase    ,			__UpperCamelCase			)
							snake_case__      :   int      =    self.image_processor



			def __call__(     self		:						Tuple    ,			__UpperCamelCase		:						Optional[Any]=None    ,			__UpperCamelCase		:						Optional[int]=None    ,			__UpperCamelCase		:						Any=None    ,			**__UpperCamelCase		:						Dict			)      ->      Union[str, Any]:
							"""simple docstring"""





							if text is None and images is None:
											raise ValueError('''You have to specify either text or images. Both cannot be none.'''			)

							if text is not None:
											snake_case__      :   int      =    self.tokenizer(__UpperCamelCase    ,			return_tensors=__UpperCamelCase    ,			**__UpperCamelCase			)

							if images is not None:
											snake_case__      :   List[Any]      =    self.image_processor(__UpperCamelCase    ,			return_tensors=__UpperCamelCase    ,			**__UpperCamelCase			)

							if text is not None and images is not None:
											snake_case__      :   Union[str, Any]      =    image_features.pixel_values
											return encoding
							elif text is not None:
											return encoding
							else:
											return BatchEncoding(data=dict(**__UpperCamelCase			)    ,			tensor_type=__UpperCamelCase			)



			def 				lowerCAmelCase (     self		:						Tuple    ,			*__UpperCamelCase		:						int    ,			**__UpperCamelCase		:						List[Any]			)      ->      Dict:
							"""simple docstring"""





							return self.tokenizer.batch_decode(*__UpperCamelCase    ,			**__UpperCamelCase			)



			def 				lowerCAmelCase (     self		:						Union[str, Any]    ,			*__UpperCamelCase		:						Optional[Any]    ,			**__UpperCamelCase		:						Dict			)      ->      int:
							"""simple docstring"""





							return self.tokenizer.decode(*__UpperCamelCase    ,			**__UpperCamelCase			)



			@property
			def 				lowerCAmelCase (     self		:						Tuple			)      ->      Tuple:
							"""simple docstring"""





							snake_case__      :   List[Any]      =    self.tokenizer.model_input_names
							snake_case__      :   str      =    self.image_processor.model_input_names
							return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names			)			)



			@property
			def 				lowerCAmelCase (     self		:						str			)      ->      str:
							"""simple docstring"""





							warnings.warn(
							    '''`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead.'''    ,			__UpperCamelCase    ,			)
							return self.image_processor_class







			@property
			def 				lowerCAmelCase (     self		:						Dict			)      ->      str:
							"""simple docstring"""





							warnings.warn(
							    '''`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.'''    ,			__UpperCamelCase    ,			)
							return self.image_processor












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    UpperCamelCase__  (   UpperCAmelCase    ,	UpperCAmelCase    ,	UpperCAmelCase    ,	UpperCAmelCase     )     ->		str:







							"""simple docstring"""





							_a  :    Union[str, Any]			=						ElectraConfig.from_json_file(UpperCAmelCase     )
							print(F'Building PyTorch model from configuration: {config}'     )

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

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

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


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