


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


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

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


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

def 			_lowerCAmelCase				(       lowercase_						):
						UpperCAmelCase					=			None

						# source code of `config_class`
						UpperCAmelCase					=			inspect.getsource(__lowerCamelCase						)
						UpperCAmelCase					=			_re_checkpoint.findall(__lowerCamelCase						)

						# 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				(       ):
						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(__lowerCamelCase						)

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

						if len(__lowerCamelCase						) > 0:
												UpperCAmelCase					=			"\n".join(sorted(__lowerCamelCase						)						)
												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,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


snake_case_    					=	{
    """configuration_rembert""": ["""REMBERT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """RemBertConfig""", """RemBertOnnxConfig"""]
}

try:
				if not is_sentencepiece_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				snake_case_    					=	["""RemBertTokenizer"""]

try:
				if not is_tokenizers_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				snake_case_    					=	["""RemBertTokenizerFast"""]

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				snake_case_    					=	[
				    """REMBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
				    """RemBertForCausalLM""",
				    """RemBertForMaskedLM""",
				    """RemBertForMultipleChoice""",
				    """RemBertForQuestionAnswering""",
				    """RemBertForSequenceClassification""",
				    """RemBertForTokenClassification""",
				    """RemBertLayer""",
				    """RemBertModel""",
				    """RemBertPreTrainedModel""",
				    """load_tf_weights_in_rembert""",
				]


try:
				if not is_tf_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				snake_case_    					=	[
				    """TF_REMBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
				    """TFRemBertForCausalLM""",
				    """TFRemBertForMaskedLM""",
				    """TFRemBertForMultipleChoice""",
				    """TFRemBertForQuestionAnswering""",
				    """TFRemBertForSequenceClassification""",
				    """TFRemBertForTokenClassification""",
				    """TFRemBertLayer""",
				    """TFRemBertModel""",
				    """TFRemBertPreTrainedModel""",
				]


if TYPE_CHECKING:
				from .configuration_rembert import REMBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, RemBertConfig, RemBertOnnxConfig

				try:
								if not is_sentencepiece_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_rembert import RemBertTokenizer

				try:
								if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_rembert_fast import RemBertTokenizerFast

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_rembert import (
								    REMBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
								    RemBertForCausalLM,
								    RemBertForMaskedLM,
								    RemBertForMultipleChoice,
								    RemBertForQuestionAnswering,
								    RemBertForSequenceClassification,
								    RemBertForTokenClassification,
								    RemBertLayer,
								    RemBertModel,
								    RemBertPreTrainedModel,
								    load_tf_weights_in_rembert,
								)

				try:
								if not is_tf_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_tf_rembert import (
								    TF_REMBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
								    TFRemBertForCausalLM,
								    TFRemBertForMaskedLM,
								    TFRemBertForMultipleChoice,
								    TFRemBertForQuestionAnswering,
								    TFRemBertForSequenceClassification,
								    TFRemBertForTokenClassification,
								    TFRemBertLayer,
								    TFRemBertModel,
								    TFRemBertPreTrainedModel,
								)


else:
				import sys

				snake_case_    					=	_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)





