


"""simple docstring"""




from typing import TYPE_CHECKING

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


UpperCAmelCase__            =							{
    '''configuration_dpr''': ['''DPR_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''DPRConfig'''],
    '''tokenization_dpr''': [
        '''DPRContextEncoderTokenizer''',
        '''DPRQuestionEncoderTokenizer''',
        '''DPRReaderOutput''',
        '''DPRReaderTokenizer''',
    ],
}


try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__            =							[
      '''DPRContextEncoderTokenizerFast''',
      '''DPRQuestionEncoderTokenizerFast''',
      '''DPRReaderTokenizerFast''',
  ]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__            =							[
      '''DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''DPRContextEncoder''',
      '''DPRPretrainedContextEncoder''',
      '''DPRPreTrainedModel''',
      '''DPRPretrainedQuestionEncoder''',
      '''DPRPretrainedReader''',
      '''DPRQuestionEncoder''',
      '''DPRReader''',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__            =							[
      '''TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TFDPRContextEncoder''',
      '''TFDPRPretrainedContextEncoder''',
      '''TFDPRPretrainedQuestionEncoder''',
      '''TFDPRPretrainedReader''',
      '''TFDPRQuestionEncoder''',
      '''TFDPRReader''',
  ]


if TYPE_CHECKING:
  from .configuration_dpr import DPR_PRETRAINED_CONFIG_ARCHIVE_MAP, DPRConfig
  from .tokenization_dpr import (
      DPRContextEncoderTokenizer,
      DPRQuestionEncoderTokenizer,
      DPRReaderOutput,
      DPRReaderTokenizer,
  )

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_dpr_fast import (
        DPRContextEncoderTokenizerFast,
        DPRQuestionEncoderTokenizerFast,
        DPRReaderTokenizerFast,
    )

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_dpr import (
        DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
        DPRContextEncoder,
        DPRPretrainedContextEncoder,
        DPRPreTrainedModel,
        DPRPretrainedQuestionEncoder,
        DPRPretrainedReader,
        DPRQuestionEncoder,
        DPRReader,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_dpr import (
        TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFDPRContextEncoder,
        TFDPRPretrainedContextEncoder,
        TFDPRPretrainedQuestionEncoder,
        TFDPRPretrainedReader,
        TFDPRQuestionEncoder,
        TFDPRReader,
    )

else:
  import sys

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





import argparse

from . import (
    BertConfig,
    BertGenerationConfig,
    BertGenerationDecoder,
    BertGenerationEncoder,
    load_tf_weights_in_bert_generation,
    logging,
)


logging.set_verbosity_info()
def     UpperCAmelCase_ (							__snake_case					,						__snake_case					,						__snake_case					,						__snake_case					,						__snake_case						)					->      Tuple:







 """simple docstring"""


 _lowercase											=BertConfig.from_pretrained(
     '''bert-large-cased'''					,						vocab_size=__snake_case					,						max_position_embeddings=512					,						is_decoder=__snake_case					,						add_cross_attention=__snake_case					,						)
 _lowercase											=bert_config.to_dict()
 del bert_config_dict["type_vocab_size"]
 _lowercase											=BertGenerationConfig(**__snake_case						)
 if is_encoder:
  _lowercase											=BertGenerationEncoder(__snake_case						)
 else:
  _lowercase											=BertGenerationDecoder(__snake_case						)
 print(F"Building PyTorch model from configuration: {config}"						)

 # Load weights from tf checkpoint
 load_tf_weights_in_bert_generation(
     __snake_case					,						__snake_case					,						model_class='''bert'''					,						is_encoder_named_decoder=__snake_case					,						is_encoder=__snake_case					,						)

 # Save pytorch-model
 print(F"Save PyTorch model and config to {pytorch_dump_path}"						)
 model.save_pretrained(__snake_case						)


if __name__ == "__main__":
  UpperCAmelCase__            =							argparse.ArgumentParser()
  # Required parameters
  parser.add_argument(
      '''--tf_hub_path''', default=None, type=str, required=True, help='''Path to the TensorFlow checkpoint path.'''
  )
  parser.add_argument(
      '''--pytorch_dump_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
  )
  parser.add_argument(
      '''--is_encoder_named_decoder''',
      action='''store_true''',
      help='''If decoder has to be renamed to encoder in PyTorch model.''',
  )
  parser.add_argument('''--is_encoder''', action='''store_true''', help='''If model is an encoder.''')
  parser.add_argument('''--vocab_size''', default=5_0358, type=int, help='''Vocab size of model''')
  UpperCAmelCase__            =							parser.parse_args()
  convert_tf_checkpoint_to_pytorch(
      args.tf_hub_path,
      args.pytorch_dump_path,
      args.is_encoder_named_decoder,
      args.vocab_size,
      is_encoder=args.is_encoder,
  )

