





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 					A__	(       SCREAMING_SNAKE_CASE_							,       SCREAMING_SNAKE_CASE_							,       SCREAMING_SNAKE_CASE_							,       SCREAMING_SNAKE_CASE_		):
		# Initialise PyTorch model
		lowerCamelCase   : Any								=FunnelConfig.from_json_file(SCREAMING_SNAKE_CASE_		)
		print(F"Building PyTorch model from configuration: {config}"		)
		lowerCamelCase   : Tuple								=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__":
				snake_case_							=			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.'''
				)
				snake_case_							=			parser.parse_args()
				convert_tf_checkpoint_to_pytorch(
				    args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
				)








from __future__ import annotations


def 					A__	(       SCREAMING_SNAKE_CASE_		)   ->     bool:
		if len(SCREAMING_SNAKE_CASE_		) < 2:
				raise ValueError('''Monogons and Digons are not polygons in the Euclidean space'''		)
		if any(i <= 0 for i in nums		):
				raise ValueError('''All values must be greater than 0'''		)
		lowerCamelCase   : List[Any]								=nums.copy()
		copy_nums.sort()
		return copy_nums[-1] < sum(copy_nums[:-1]		)


if __name__ == "__main__":
				import doctest

				doctest.testmod()

