


"""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
UpperCAmelCase__  							="src/transformers"


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

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


UpperCAmelCase__  							={
    "DecisionTransformerConfig",
    "EncoderDecoderConfig",
    "MusicgenConfig",
    "RagConfig",
    "SpeechEncoderDecoderConfig",
    "TimmBackboneConfig",
    "VisionEncoderDecoderConfig",
    "VisionTextDualEncoderConfig",
    "LlamaConfig",
}


def lowerCAmelCase_      (				UpperCamelCase__	: Optional[int] ):






 """simple docstring"""







 __lowercase									=	None

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

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

 return checkpoint


def lowerCAmelCase_      (				):






 """simple docstring"""







 __lowercase									=	[]

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

  __lowercase									=	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:
  __lowercase									=	"""\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"""

from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


UpperCAmelCase__  							={"configuration_van": ["VAN_PRETRAINED_CONFIG_ARCHIVE_MAP", "VanConfig"]}


try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       UpperCAmelCase__  							=[
           "VAN_PRETRAINED_MODEL_ARCHIVE_LIST",
           "VanForImageClassification",
           "VanModel",
           "VanPreTrainedModel",
       ]

if TYPE_CHECKING:
       from .configuration_van import VAN_PRETRAINED_CONFIG_ARCHIVE_MAP, VanConfig

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_van import (
                  VAN_PRETRAINED_MODEL_ARCHIVE_LIST,
                  VanForImageClassification,
                  VanModel,
                  VanPreTrainedModel,
              )

else:
       import sys

       UpperCAmelCase__  							=_LazyModule(__name__, globals()["__file__"], _import_structure)
