"""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
lowerCAmelCase_:					int     =					"src/transformers"


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

lowerCAmelCase_:					List[Any]     =					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_:					Optional[int]     =					re.compile(R"\[(.+?)\]\((https://huggingface\.co/.+?)\)")


lowerCAmelCase_:					Dict     =					{
    "DecisionTransformerConfig",
    "EncoderDecoderConfig",
    "MusicgenConfig",
    "RagConfig",
    "SpeechEncoderDecoderConfig",
    "TimmBackboneConfig",
    "VisionEncoderDecoderConfig",
    "VisionTextDualEncoderConfig",
    "LlamaConfig",
}







def 					__a   (		A      ):






     '''simple docstring'''



     lowercase__				 =							None

     # source code of `config_class`
     lowercase__				 =							inspect.getsource(A      )
     lowercase__				 =							_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("/"      ):
               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 					__a   (		):






     '''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(A      )

          lowercase__				 =							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:
          lowercase__				 =							"\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_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCAmelCase_:					Union[str, Any]     =					{
    "configuration_distilbert": [
        "DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "DistilBertConfig",
        "DistilBertOnnxConfig",
    ],
    "tokenization_distilbert": ["DistilBertTokenizer"],
}

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Union[str, Any]     =					["DistilBertTokenizerFast"]

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Any     =					[
     "DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "DistilBertForMaskedLM",
     "DistilBertForMultipleChoice",
     "DistilBertForQuestionAnswering",
     "DistilBertForSequenceClassification",
     "DistilBertForTokenClassification",
     "DistilBertModel",
     "DistilBertPreTrainedModel",
 ]

try:
 if not is_tf_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Tuple     =					[
     "TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "TFDistilBertForMaskedLM",
     "TFDistilBertForMultipleChoice",
     "TFDistilBertForQuestionAnswering",
     "TFDistilBertForSequenceClassification",
     "TFDistilBertForTokenClassification",
     "TFDistilBertMainLayer",
     "TFDistilBertModel",
     "TFDistilBertPreTrainedModel",
 ]

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Optional[Any]     =					[
     "FlaxDistilBertForMaskedLM",
     "FlaxDistilBertForMultipleChoice",
     "FlaxDistilBertForQuestionAnswering",
     "FlaxDistilBertForSequenceClassification",
     "FlaxDistilBertForTokenClassification",
     "FlaxDistilBertModel",
     "FlaxDistilBertPreTrainedModel",
 ]


if TYPE_CHECKING:
 from .configuration_distilbert import (
     DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
     DistilBertConfig,
     DistilBertOnnxConfig,
 )
 from .tokenization_distilbert import DistilBertTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_distilbert_fast import DistilBertTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_distilbert import (
      DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      DistilBertForMaskedLM,
      DistilBertForMultipleChoice,
      DistilBertForQuestionAnswering,
      DistilBertForSequenceClassification,
      DistilBertForTokenClassification,
      DistilBertModel,
      DistilBertPreTrainedModel,
  )

 try:
  if not is_tf_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_tf_distilbert import (
      TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      TFDistilBertForMaskedLM,
      TFDistilBertForMultipleChoice,
      TFDistilBertForQuestionAnswering,
      TFDistilBertForSequenceClassification,
      TFDistilBertForTokenClassification,
      TFDistilBertMainLayer,
      TFDistilBertModel,
      TFDistilBertPreTrainedModel,
  )

 try:
  if not is_flax_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flax_distilbert import (
      FlaxDistilBertForMaskedLM,
      FlaxDistilBertForMultipleChoice,
      FlaxDistilBertForQuestionAnswering,
      FlaxDistilBertForSequenceClassification,
      FlaxDistilBertForTokenClassification,
      FlaxDistilBertModel,
      FlaxDistilBertPreTrainedModel,
  )

else:
 import sys

 lowerCAmelCase_:					Optional[int]     =					_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)




