





import argparse

import torch

from transformers import BertConfig, BertForPreTraining, load_tf_weights_in_bert
from transformers.utils import logging


logging.set_verbosity_info()






def 					SCREAMING_SNAKE_CASE__				(							UpperCamelCase__:				List[Any]       , UpperCamelCase__:				List[Any]       , UpperCamelCase__:				Dict     ):
		# Initialise PyTorch model
		SCREAMING_SNAKE_CASE__								=   BertConfig.from_json_file(UpperCamelCase__     )
		print(f'''Building PyTorch model from configuration: {config}'''     )
		SCREAMING_SNAKE_CASE__								=   BertForPreTraining(UpperCamelCase__     )

		# Load weights from tf checkpoint
		load_tf_weights_in_bert(UpperCamelCase__       , UpperCamelCase__       , 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(
	    '--bert_config_file',
	    default=None,
	    type=str,
	    required=True,
	    help=(
	        'The config json file corresponding to the pre-trained BERT 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.'
	)
	_lowerCamelCase 					=      parser.parse_args()
	convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.bert_config_file, args.pytorch_dump_path)

import warnings

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



class    a_ (			_a    ):
			a	:			Optional[Any]					   =							['''image_processor''', '''tokenizer''']
			a	:			Optional[Any]					   =							'''ChineseCLIPImageProcessor'''
			a	:			List[str]					   =							('''BertTokenizer''', '''BertTokenizerFast''')






			def __init__(      self				,			__UpperCamelCase=None				,			__UpperCamelCase=None				,			**__UpperCamelCase  ):
									_lowercase					       =					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				,			)
															_lowercase					       =					kwargs.pop("""feature_extractor"""  )

									_lowercase					       =					image_processor if image_processor is not None else feature_extractor
									if image_processor is None:
															raise ValueError("""You need to specify an `image_processor`."""  )
									if tokenizer is None:
															raise ValueError("""You need to specify a `tokenizer`."""  )

									super().__init__(__UpperCamelCase				,			__UpperCamelCase  )
									_lowercase					       =					self.image_processor






			def __call__(      self				,			__UpperCamelCase=None				,			__UpperCamelCase=None				,			__UpperCamelCase=None				,			**__UpperCamelCase  ):

									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:
															_lowercase					       =					self.tokenizer(__UpperCamelCase				,			return_tensors=__UpperCamelCase				,			**__UpperCamelCase  )

									if images is not None:
															_lowercase					       =					self.image_processor(__UpperCamelCase				,			return_tensors=__UpperCamelCase				,			**__UpperCamelCase  )

									if text is not None and images is not None:
															_lowercase					       =					image_features.pixel_values
															return encoding
									elif text is not None:
															return encoding
									else:
															return BatchEncoding(data=dict(**__UpperCamelCase  )				,			tensor_type=__UpperCamelCase  )






			def    UpperCamelCase_				(      self				,			*__UpperCamelCase				,			**__UpperCamelCase  ):
									return self.tokenizer.batch_decode(*__UpperCamelCase				,			**__UpperCamelCase  )






			def    UpperCamelCase_				(      self				,			*__UpperCamelCase				,			**__UpperCamelCase  ):
									return self.tokenizer.decode(*__UpperCamelCase				,			**__UpperCamelCase  )






			@property
			def    UpperCamelCase_				(      self  ):
									_lowercase					       =					self.tokenizer.model_input_names
									_lowercase					       =					self.image_processor.model_input_names
									return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names  )  )






			@property
			def    UpperCamelCase_				(      self  ):
									warnings.warn(
									    """`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead."""				,			__UpperCamelCase				,			)
									return self.image_processor_class