


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
lowerCAmelCase__    :Any       =				'''src/transformers'''


# This is to make sure the transformers module imported is the one in the repo.
lowerCAmelCase__    :Union[str, Any]       =				direct_transformers_import(PATH_TO_TRANSFORMERS)

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


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

def 			lowerCAmelCase__					(     a__:						Any			)    ->						Any:


							'''simple docstring'''





							_UpperCAmelCase											=     None

							# source code of `config_class`
							_UpperCAmelCase											=     inspect.getsource(a__			)
							_UpperCAmelCase											=     _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('/'			):
																					_UpperCAmelCase											=     ckpt_link[:-1]

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

							return checkpoint

def 			lowerCAmelCase__					(     )    ->						List[Any]:


							'''simple docstring'''





							_UpperCAmelCase											=     []

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

														_UpperCAmelCase											=     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:
														_UpperCAmelCase											=     '\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()




from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


lowerCAmelCase__    :Tuple       =				{'''configuration_deit''': ['''DEIT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''DeiTConfig''', '''DeiTOnnxConfig''']}

try:
		if not is_vision_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__    :List[Any]       =				['''DeiTFeatureExtractor''']
		lowerCAmelCase__    :Union[str, Any]       =				['''DeiTImageProcessor''']

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__    :Tuple       =				[
		    '''DEIT_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''DeiTForImageClassification''',
		    '''DeiTForImageClassificationWithTeacher''',
		    '''DeiTForMaskedImageModeling''',
		    '''DeiTModel''',
		    '''DeiTPreTrainedModel''',
		]

try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__    :Union[str, Any]       =				[
		    '''TF_DEIT_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''TFDeiTForImageClassification''',
		    '''TFDeiTForImageClassificationWithTeacher''',
		    '''TFDeiTForMaskedImageModeling''',
		    '''TFDeiTModel''',
		    '''TFDeiTPreTrainedModel''',
		]


if TYPE_CHECKING:
		from .configuration_deit import DEIT_PRETRAINED_CONFIG_ARCHIVE_MAP, DeiTConfig, DeiTOnnxConfig

		try:
				if not is_vision_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .feature_extraction_deit import DeiTFeatureExtractor
				from .image_processing_deit import DeiTImageProcessor

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_deit import (
				    DEIT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    DeiTForImageClassification,
				    DeiTForImageClassificationWithTeacher,
				    DeiTForMaskedImageModeling,
				    DeiTModel,
				    DeiTPreTrainedModel,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_deit import (
				    TF_DEIT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    TFDeiTForImageClassification,
				    TFDeiTForImageClassificationWithTeacher,
				    TFDeiTForMaskedImageModeling,
				    TFDeiTModel,
				    TFDeiTPreTrainedModel,
				)


else:
		import sys

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