




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			(       _A  ):
						lowerCAmelCase_      			=  None

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

												# verify the checkpoint name corresponds to the checkpoint link
												lowerCAmelCase_      			=  f"https://huggingface.co/{ckpt_name}"
												if ckpt_link == ckpt_link_from_name:
																		lowerCAmelCase_      			=  ckpt_name
																		break

						return checkpoint





def __UpperCamelCase			(       ):
						lowerCAmelCase_      			=  []

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

												lowerCAmelCase_      			=  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:
												lowerCAmelCase_      			=  '''\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 ...utils import (
    OptionalDependencyNotAvailable,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)


try:
						if not (is_transformers_available() and is_torch_available() and is_transformers_version('''>=''', '''4.25.0''')):
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						from ...utils.dummy_torch_and_transformers_objects import UnCLIPImageVariationPipeline, UnCLIPPipeline
else:
						from .pipeline_unclip import UnCLIPPipeline
						from .pipeline_unclip_image_variation import UnCLIPImageVariationPipeline
						from .text_proj import UnCLIPTextProjModel




