




# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse

from ...utils.dataclasses import (
    ComputeEnvironment,
    DistributedType,
    DynamoBackend,
    PrecisionType,
    SageMakerDistributedType,
)
from ..menu import BulletMenu


SCREAMING_SNAKE_CASE__     :     List[Any]		    =       [
    "EAGER",
    "AOT_EAGER",
    "INDUCTOR",
    "NVFUSER",
    "AOT_NVFUSER",
    "AOT_CUDAGRAPHS",
    "OFI",
    "FX2TRT",
    "ONNXRT",
    "IPEX",
]

def lowercase    (  SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE=None       ,    SCREAMING_SNAKE_CASE=None       ,    SCREAMING_SNAKE_CASE=None )			->							Union[str, Any]:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						True
			while ask_again:
						SCREAMING_SNAKE_CASE_								=						input(SCREAMING_SNAKE_CASE )
						try:
									if default is not None and len(SCREAMING_SNAKE_CASE ) == 0:
												return default
									return convert_value(SCREAMING_SNAKE_CASE ) if convert_value is not None else result
						except Exception:
									if error_message is not None:
												print(SCREAMING_SNAKE_CASE )

def lowercase    (  SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE=[]       ,    SCREAMING_SNAKE_CASE=None       ,    SCREAMING_SNAKE_CASE=0 )			->							int:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						BulletMenu(SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE )
			SCREAMING_SNAKE_CASE_								=						menu.run(default_choice=SCREAMING_SNAKE_CASE )
			return convert_value(SCREAMING_SNAKE_CASE ) if convert_value is not None else result

def lowercase    (  SCREAMING_SNAKE_CASE )			->							List[Any]:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						int(SCREAMING_SNAKE_CASE )
			return ComputeEnvironment(['LOCAL_MACHINE', 'AMAZON_SAGEMAKER'][value] )

def lowercase    (  SCREAMING_SNAKE_CASE )			->							Optional[int]:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						int(SCREAMING_SNAKE_CASE )
			return DistributedType(['NO', 'MULTI_CPU', 'MULTI_XPU', 'MULTI_GPU', 'MULTI_NPU', 'TPU'][value] )

def lowercase    (  SCREAMING_SNAKE_CASE )			->							Any:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						int(SCREAMING_SNAKE_CASE )
			return DynamoBackend(DYNAMO_BACKENDS[value] ).value

def lowercase    (  SCREAMING_SNAKE_CASE )			->							Dict:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						int(SCREAMING_SNAKE_CASE )
			return PrecisionType(['no', 'fp16', 'bf16', 'fp8'][value] )

def lowercase    (  SCREAMING_SNAKE_CASE )			->							Dict:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						int(SCREAMING_SNAKE_CASE )
			return SageMakerDistributedType(['NO', 'DATA_PARALLEL', 'MODEL_PARALLEL'][value] )

def lowercase    (  SCREAMING_SNAKE_CASE )			->							List[str]:


			'''simple docstring'''







			return {"yes": True, "no": False}[value.lower()]



class       a_       (     argparse.RawDescriptionHelpFormatter     ):





	def 						A_(							self      ,     SCREAMING_SNAKE_CASE      ,     SCREAMING_SNAKE_CASE      ,     SCREAMING_SNAKE_CASE      ,     SCREAMING_SNAKE_CASE      )  ->					List[str]:




				"""simple docstring"""



				SCREAMING_SNAKE_CASE_								=						super()._format_usage(SCREAMING_SNAKE_CASE      ,     SCREAMING_SNAKE_CASE      ,     SCREAMING_SNAKE_CASE      ,     SCREAMING_SNAKE_CASE      )
				SCREAMING_SNAKE_CASE_								=						usage.replace('<command> [<args>] '      ,     ''      )
				return usage






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 lowercase    (  SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE )			->							Union[str, Any]:


			'''simple docstring'''







			SCREAMING_SNAKE_CASE_								=						FunnelConfig.from_json_file(SCREAMING_SNAKE_CASE )
			print(F'Building PyTorch model from configuration: {config}' )
			SCREAMING_SNAKE_CASE_								=						FunnelBaseModel(SCREAMING_SNAKE_CASE ) if base_model else FunnelModel(SCREAMING_SNAKE_CASE )

			# Load weights from tf checkpoint
			load_tf_weights_in_funnel(SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE       ,    SCREAMING_SNAKE_CASE )

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


if __name__ == "__main__":
				SCREAMING_SNAKE_CASE__     :     Union[str, 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."
				)
				parser.add_argument(
				    "--base_model", action="store_true", help="Whether you want just the base model (no decoder) or not."
				)
				SCREAMING_SNAKE_CASE__     :     List[Any]		    =       parser.parse_args()
				convert_tf_checkpoint_to_pytorch(
				    args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
				)
