

from typing import TYPE_CHECKING

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


a_     =			{
    'configuration_perceiver': ['PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP', 'PerceiverConfig', 'PerceiverOnnxConfig'],
    'tokenization_perceiver': ['PerceiverTokenizer'],
}

try:
			if not is_vision_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a_     =			['PerceiverFeatureExtractor']
			a_     =			['PerceiverImageProcessor']

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a_     =			[
			    'PERCEIVER_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'PerceiverForImageClassificationConvProcessing',
			    'PerceiverForImageClassificationFourier',
			    'PerceiverForImageClassificationLearned',
			    'PerceiverForMaskedLM',
			    'PerceiverForMultimodalAutoencoding',
			    'PerceiverForOpticalFlow',
			    'PerceiverForSequenceClassification',
			    'PerceiverLayer',
			    'PerceiverModel',
			    'PerceiverPreTrainedModel',
			]


if TYPE_CHECKING:
			from .configuration_perceiver import PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP, PerceiverConfig, PerceiverOnnxConfig
			from .tokenization_perceiver import PerceiverTokenizer

			try:
						if not is_vision_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .feature_extraction_perceiver import PerceiverFeatureExtractor
						from .image_processing_perceiver import PerceiverImageProcessor

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_perceiver import (
						    PERCEIVER_PRETRAINED_MODEL_ARCHIVE_LIST,
						    PerceiverForImageClassificationConvProcessing,
						    PerceiverForImageClassificationFourier,
						    PerceiverForImageClassificationLearned,
						    PerceiverForMaskedLM,
						    PerceiverForMultimodalAutoencoding,
						    PerceiverForOpticalFlow,
						    PerceiverForSequenceClassification,
						    PerceiverLayer,
						    PerceiverModel,
						    PerceiverPreTrainedModel,
						)

else:
			import sys

			a_     =			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




import argparse

import torch

from transformers import LxmertConfig, LxmertForPreTraining, load_tf_weights_in_lxmert
from transformers.utils import logging


logging.set_verbosity_info()





def      __snake_case	(			_UpperCAmelCase   , _UpperCAmelCase   , _UpperCAmelCase				):
    # Initialise PyTorch model
    __a						       =				LxmertConfig.from_json_file(_UpperCAmelCase				)
    print(f'Building PyTorch model from configuration: {config}'				)
    __a						       =				LxmertForPreTraining(_UpperCAmelCase				)

    # Load weights from tf checkpoint
    load_tf_weights_in_lxmert(_UpperCAmelCase   , _UpperCAmelCase   , _UpperCAmelCase				)

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


if __name__ == "__main__":
 __snake_case						:List[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.'''
 )
 __snake_case						:Optional[Any]      		=     parser.parse_args()
 convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path)





