




import argparse

import torch
from torch import nn

from transformers import SpeechaTextConfig, SpeechaTextForConditionalGeneration



def       UpperCAmelCase       (     _snake_case							):
       lowerCAmelCase   =		[
           '''encoder.version''',
           '''decoder.version''',
           '''model.encoder.version''',
           '''model.decoder.version''',
           '''decoder.output_projection.weight''',
           '''_float_tensor''',
           '''encoder.embed_positions._float_tensor''',
           '''decoder.embed_positions._float_tensor''',
       ]
       for k in ignore_keys:
              state_dict.pop(__UpperCAmelCase						, __UpperCAmelCase							)



def       UpperCAmelCase       (     _snake_case							):
       lowerCAmelCase   =		list(s_dict.keys()							)
       for key in keys:
              if "transformer_layers" in key:
                     lowerCAmelCase   =		s_dict.pop(__UpperCAmelCase							)
              elif "subsample" in key:
                     lowerCAmelCase   =		s_dict.pop(__UpperCAmelCase							)



def       UpperCAmelCase       (     _snake_case							):
       lowerCAmelCase   ,     lowerCAmelCase   =		emb.weight.shape
       lowerCAmelCase   =		nn.Linear(__UpperCAmelCase						, __UpperCAmelCase						, bias=__UpperCAmelCase							)
       lowerCAmelCase   =		emb.weight.data
       return lin_layer



def       UpperCAmelCase       (     _snake_case						, _snake_case							):
       lowerCAmelCase   =		torch.load(__UpperCAmelCase						, map_location='''cpu'''							)
       lowerCAmelCase   =		mam_aaa['''args''']
       lowerCAmelCase   =		mam_aaa['''model''']
       lowerCAmelCase   =		state_dict['''decoder.output_projection.weight''']

       remove_ignore_keys_(__UpperCAmelCase							)
       rename_keys(__UpperCAmelCase							)

       lowerCAmelCase   =		state_dict['''decoder.embed_tokens.weight'''].shape[0]

       lowerCAmelCase   =		args.share_decoder_input_output_embed

       lowerCAmelCase   =		[int(__UpperCAmelCase							) for i in args.conv_kernel_sizes.split(''','''							)]
       lowerCAmelCase   =		SpeechaTextConfig(
           vocab_size=__UpperCAmelCase						, max_source_positions=args.max_source_positions						, max_target_positions=args.max_target_positions						, encoder_layers=args.encoder_layers						, decoder_layers=args.decoder_layers						, encoder_attention_heads=args.encoder_attention_heads						, decoder_attention_heads=args.decoder_attention_heads						, encoder_ffn_dim=args.encoder_ffn_embed_dim						, decoder_ffn_dim=args.decoder_ffn_embed_dim						, d_model=args.encoder_embed_dim						, dropout=args.dropout						, attention_dropout=args.attention_dropout						, activation_dropout=args.activation_dropout						, activation_function='''relu'''						, num_conv_layers=len(__UpperCAmelCase							)						, conv_channels=args.conv_channels						, conv_kernel_sizes=__UpperCAmelCase						, input_feat_per_channel=args.input_feat_per_channel						, input_channels=args.input_channels						, tie_word_embeddings=__UpperCAmelCase						, num_beams=5						, max_length=200						, use_cache=__UpperCAmelCase						, decoder_start_token_id=2						, early_stopping=__UpperCAmelCase						, )

       lowerCAmelCase   =		SpeechaTextForConditionalGeneration(__UpperCAmelCase							)
       lowerCAmelCase   ,     lowerCAmelCase   =		model.model.load_state_dict(__UpperCAmelCase						, strict=__UpperCAmelCase							)
       if len(__UpperCAmelCase							) > 0 and not set(__UpperCAmelCase							) <= {
           "encoder.embed_positions.weights",
           "decoder.embed_positions.weights",
       }:
              raise ValueError(
                  '''Only `encoder.embed_positions.weights` and `decoder.embed_positions.weights`  are allowed to be missing,'''
                  F""" but all the following weights are missing {missing}"""							)

       if tie_embeds:
              lowerCAmelCase   =		make_linear_from_emb(model.model.decoder.embed_tokens							)
       else:
              lowerCAmelCase   =		lm_head_weights

       model.save_pretrained(__UpperCAmelCase							)


if __name__ == "__main__":
  UpperCAmelCase_						=argparse.ArgumentParser()
  # Required parameters
  parser.add_argument("""--fairseq_path""", type=str, help="""Path to the fairseq model (.pt) file.""")
  parser.add_argument("""--pytorch_dump_folder_path""", default=None, type=str, help="""Path to the output PyTorch model.""")
  UpperCAmelCase_						=parser.parse_args()
  convert_fairseq_sat_checkpoint_to_tfms(args.fairseq_path, args.pytorch_dump_folder_path)









from collections.abc import Sequence



def       UpperCAmelCase       (     _snake_case						, _snake_case = False							):
							if not arr:
														return 0

							lowerCAmelCase   =		0 if allow_empty_subarrays else float('''-inf'''							)
							lowerCAmelCase   =		0.0
							for num in arr:
														lowerCAmelCase   =		max(0 if allow_empty_subarrays else num						, curr_sum + num							)
														lowerCAmelCase   =		max(_snake_case						, _snake_case							)

							return max_sum


if __name__ == "__main__":
		from doctest import testmod

		testmod()

		UpperCAmelCase_						=[-2, 1, -3, 4, -1, 2, 1, -5, 4]
		print(F'''{max_subarray_sum(nums) = }''')



