

'''simple docstring'''







import argparse

import torch

from transformers import FunnelBaseModel, FunnelConfig, FunnelModel, load_tf_weights_in_funnel
from transformers.utils import logging


logging.set_verbosity_info()
def       UpperCAmelCase__    (      UpperCAmelCase__,       UpperCAmelCase__,       UpperCAmelCase__,       UpperCAmelCase__				)			->			Optional[Any]:
       # Initialise PyTorch model
       A_						=      FunnelConfig.from_json_file(UpperCAmelCase__				)
       print(F'''Building PyTorch model from configuration: {config}'''				)
       A_						=      FunnelBaseModel(UpperCAmelCase__				) if base_model else FunnelModel(UpperCAmelCase__				)

       # Load weights from tf checkpoint
       load_tf_weights_in_funnel(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(
          '''--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(
          '''--base_model''', action='''store_true''', help='''Whether you want just the base model (no decoder) or not.'''
      )
      __lowerCamelCase		       =    parser.parse_args()
      convert_tf_checkpoint_to_pytorch(
          args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
      )



'''simple docstring'''







def       UpperCAmelCase__    (      UpperCAmelCase__				)			->			int:
       assert (
           isinstance(UpperCAmelCase__,       UpperCAmelCase__				) and number_of_steps > 0
       ), F'''number_of_steps needs to be positive integer, your input {number_of_steps}'''
       if number_of_steps == 1:
              return 1
       A_					,			A_						=      1, 1
       for _ in range(number_of_steps - 1				):
              A_					,			A_						=      current + previous, current
       return current


if __name__ == "__main__":
      import doctest

      doctest.testmod()
