


import importlib
import inspect
import os
import re


# All paths are set with the intent you should run this script from the root of the repo with the command
# python utils/check_config_docstrings.py
lowerCAmelCase__			:      str								='src/transformers'


# This is to make sure the transformers module imported is the one in the repo.
lowerCAmelCase__			:      List[Any]								=importlib.util.spec_from_file_location(
    'transformers',
    os.path.join(PATH_TO_TRANSFORMERS, '__init__.py'),
    submodule_search_locations=[PATH_TO_TRANSFORMERS],
)
lowerCAmelCase__			:      Union[str, Any]								=spec.loader.load_module()

lowerCAmelCase__			:      int								=transformers.models.auto.configuration_auto.CONFIG_MAPPING

# Regex pattern used to find the checkpoint mentioned in the docstring of `config_class`.
# For example, `[bert-base-uncased](https://huggingface.co/bert-base-uncased)`
lowerCAmelCase__			:      Any								=re.compile('\[(.+?)\]\((https://huggingface\.co/.+?)\)')


lowerCAmelCase__			:      Tuple								={
    'CLIPConfigMixin',
    'DecisionTransformerConfigMixin',
    'EncoderDecoderConfigMixin',
    'RagConfigMixin',
    'SpeechEncoderDecoderConfigMixin',
    'VisionEncoderDecoderConfigMixin',
    'VisionTextDualEncoderConfigMixin',
}






def 						a__			(				):
			SCREAMING_SNAKE_CASE_		:     Optional[int]					=					[]

			for config_class in list(CONFIG_MAPPING.values()				):
						SCREAMING_SNAKE_CASE_		:     Union[str, Any]					=					False

						# source code of `config_class`
						SCREAMING_SNAKE_CASE_		:     Any					=					inspect.getsource(A__				)
						SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					_re_checkpoint.findall(A__				)

						for checkpoint in checkpoints:
									# Each `checkpoint` is a tuple of a checkpoint name and a checkpoint link.
									# For example, `('bert-base-uncased', 'https://huggingface.co/bert-base-uncased')`
									SCREAMING_SNAKE_CASE_		,      SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					checkpoint

									# verify the checkpoint name corresponds to the checkpoint link
									SCREAMING_SNAKE_CASE_		:     Optional[int]					=					F'''https://huggingface.co/{ckpt_name}'''
									if ckpt_link == ckpt_link_from_name:
												SCREAMING_SNAKE_CASE_		:     Tuple					=					True
												break

						SCREAMING_SNAKE_CASE_		:     Dict					=					config_class.__name__
						if not checkpoint_found and name not in CONFIG_CLASSES_TO_IGNORE_FOR_DOCSTRING_CHECKPOINT_CHECK:
									configs_without_checkpoint.append(A__				)

			if len(A__				) > 0:
						SCREAMING_SNAKE_CASE_		:     Union[str, Any]					=					'\n'.join(sorted(A__				)				)
						raise ValueError(F'''The following configurations don\'t contain any valid checkpoint:\n{message}'''				)


if __name__ == "__main__":
				check_config_docstrings_have_checkpoints()









import argparse

import torch
from torch import nn

from transformers import MaMaaaConfig, MaMaaaForConditionalGeneration






def 						a__			(				A__				):
			SCREAMING_SNAKE_CASE_		:     Any					=					[
			    '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(A__,      A__				)






def 						a__			(				A__				):
			SCREAMING_SNAKE_CASE_		,      SCREAMING_SNAKE_CASE_		:     List[Any]					=					emb.weight.shape
			SCREAMING_SNAKE_CASE_		:     List[Any]					=					nn.Linear(A__,      A__,      bias=A__				)
			SCREAMING_SNAKE_CASE_		:     Dict					=					emb.weight.data
			return lin_layer






def 						a__			(				A__				):
			SCREAMING_SNAKE_CASE_		:     List[Any]					=					torch.load(A__,      map_location='cpu'				)
			SCREAMING_SNAKE_CASE_		:     Tuple					=					mam_aaa['args'] or mam_aaa['cfg']['model']
			SCREAMING_SNAKE_CASE_		:     Any					=					mam_aaa['model']
			remove_ignore_keys_(A__				)
			SCREAMING_SNAKE_CASE_		:     List[str]					=					state_dict['encoder.embed_tokens.weight'].shape[0]

			SCREAMING_SNAKE_CASE_		:     Dict					=					MaMaaaConfig(
			    vocab_size=A__,      max_position_embeddings=1_0_2_4,      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,      encoder_layerdrop=args.encoder_layerdrop,      decoder_layerdrop=args.decoder_layerdrop,      dropout=args.dropout,      attention_dropout=args.attention_dropout,      activation_dropout=args.activation_dropout,      activation_function='relu',      )

			SCREAMING_SNAKE_CASE_		:     int					=					state_dict['decoder.embed_tokens.weight']
			SCREAMING_SNAKE_CASE_		:     Union[str, Any]					=					MaMaaaForConditionalGeneration(A__				)
			model.model.load_state_dict(A__,      strict=A__				)
			SCREAMING_SNAKE_CASE_		:     int					=					make_linear_from_emb(model.model.shared				)

			return model


if __name__ == "__main__":
				lowerCAmelCase__			:      Optional[int]								=argparse.ArgumentParser()
				# Required parameters
				parser.add_argument('fairseq_path', type=str, help='path to a model.pt on local filesystem.')
				parser.add_argument('pytorch_dump_folder_path', default=None, type=str, help='Path to the output PyTorch model.')
				lowerCAmelCase__			:      Optional[Any]								=parser.parse_args()
				lowerCAmelCase__			:      int								=convert_fairseq_mamaaa_checkpoint_from_disk(args.fairseq_pathß)
				model.save_pretrained(args.pytorch_dump_folder_path)





