
'''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
lowercase    :							List[str]      =					"src/transformers"


# This is to make sure the transformers module imported is the one in the repo.
lowercase    :							Optional[int]      =					direct_transformers_import(PATH_TO_TRANSFORMERS)

lowercase    :							Dict      =					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)`
lowercase    :							List[str]      =					re.compile(r"\[(.+?)\]\((https://huggingface\.co/.+?)\)")


lowercase    :							List[str]      =					{
    "DecisionTransformerConfig",
    "EncoderDecoderConfig",
    "MusicgenConfig",
    "RagConfig",
    "SpeechEncoderDecoderConfig",
    "TimmBackboneConfig",
    "VisionEncoderDecoderConfig",
    "VisionTextDualEncoderConfig",
    "LlamaConfig",
}







def 				SCREAMING_SNAKE_CASE__	(   __A	)       ->	int:
	_snake_case   						=		None

	# source code of `config_class`
	_snake_case   						=		inspect.getsource(__A	)
	_snake_case   						=		_re_checkpoint.findall(__A	)

	# 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('/'	):
			_snake_case   						=		ckpt_link[:-1]

		# verify the checkpoint name corresponds to the checkpoint link
		_snake_case   						=		F'https://huggingface.co/{ckpt_name}'
		if ckpt_link == ckpt_link_from_name:
			_snake_case   						=		ckpt_name
			break

	return checkpoint







def 				SCREAMING_SNAKE_CASE__	(   )       ->	Optional[int]:
	_snake_case   						=		[]

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

		_snake_case   						=		config_class.__name__
		if checkpoint is None and name not in CONFIG_CLASSES_TO_IGNORE_FOR_DOCSTRING_CHECKPOINT_CHECK:
			configs_without_checkpoint.append(__A	)

	if len(__A	) > 0:
		_snake_case   						=		'\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()








"""simple docstring"""




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_sentencepiece_available


lowerCamelCase_     :						int						=					{}


try:
   if not is_sentencepiece_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   lowerCamelCase_     :						Tuple						=					['MLukeTokenizer']

if TYPE_CHECKING:
   try:
      if not is_sentencepiece_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .tokenization_mluke import MLukeTokenizer


else:
   import sys

   lowerCamelCase_     :						List[str]						=					_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)