


'''simple docstring'''



import inspect
import re

from transformers.utils import direct_transformers_import


# 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
__A	='src/transformers'


# This is to make sure the transformers module imported is the one in the repo.
__A	=direct_transformers_import(PATH_TO_TRANSFORMERS)

__A	=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)`
__A	=re.compile(R'\[(.+?)\]\((https://huggingface\.co/.+?)\)')


__A	={
    'DecisionTransformerConfig',
    'EncoderDecoderConfig',
    'MusicgenConfig',
    'RagConfig',
    'SpeechEncoderDecoderConfig',
    'TimmBackboneConfig',
    'VisionEncoderDecoderConfig',
    'VisionTextDualEncoderConfig',
    'LlamaConfig',
}







def     _UpperCamelCase      (		UpperCamelCase__					):
			UpperCAmelCase__  :					List[str]        =     None

			# source code of `config_class`
			UpperCAmelCase__  :					Optional[Any]        =     inspect.getsource(UpperCamelCase__					)
			UpperCAmelCase__  :					List[Any]        =     _re_checkpoint.findall(UpperCamelCase__					)

			# Each `checkpoint` is a tuple of a checkpoint name and a checkpoint link.
			# For example, `('bert-base-uncased', 'https://huggingface.co/bert-base-uncased')`
			for ckpt_name, ckpt_link in checkpoints:
						# allow the link to end with `/`
						if ckpt_link.endswith("""/"""					):
									UpperCAmelCase__  :					Any        =     ckpt_link[:-1]

						# verify the checkpoint name corresponds to the checkpoint link
						UpperCAmelCase__  :					Any        =     f'''https://huggingface.co/{ckpt_name}'''
						if ckpt_link == ckpt_link_from_name:
									UpperCAmelCase__  :					Tuple        =     ckpt_name
									break

			return checkpoint







def     _UpperCamelCase      (		):
			UpperCAmelCase__  :					List[str]        =     []

			for config_class in list(CONFIG_MAPPING.values()					):
						# Skip deprecated models
						if "models.deprecated" in config_class.__module__:
									continue
						UpperCAmelCase__  :					int        =     get_checkpoint_from_config_class(UpperCamelCase__					)

						UpperCAmelCase__  :					Optional[int]        =     config_class.__name__
						if checkpoint is None and name not in CONFIG_CLASSES_TO_IGNORE_FOR_DOCSTRING_CHECKPOINT_CHECK:
									configs_without_checkpoint.append(UpperCamelCase__					)

			if len(UpperCamelCase__					) > 0:
						UpperCAmelCase__  :					int        =     """\n""".join(sorted(UpperCamelCase__					)					)
						raise ValueError(f'''The following configurations don\'t contain any valid checkpoint:\n{message}'''					)


if __name__ == "__main__":
		check_config_docstrings_have_checkpoints()



'''simple docstring'''



import warnings
from functools import wraps
from typing import Callable







def     _UpperCamelCase      (		UpperCamelCase__					):

			@wraps(UpperCamelCase__					)
			def _inner_fn(*UpperCamelCase__ ,      **UpperCamelCase__					):
						warnings.warn(
						    (f'''\'{fn.__name__}\' is experimental and might be subject to breaking changes in the future.''') ,      UpperCamelCase__ ,      )
						return fn(*UpperCamelCase__ ,      **UpperCamelCase__					)

			return _inner_fn