




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


_lowerCamelCase      :  int      						=						{
    "DecisionTransformerConfig",
    "EncoderDecoderConfig",
    "MusicgenConfig",
    "RagConfig",
    "SpeechEncoderDecoderConfig",
    "TimmBackboneConfig",
    "VisionEncoderDecoderConfig",
    "VisionTextDualEncoderConfig",
    "LlamaConfig",
}




def 							_UpperCAmelCase  (UpperCamelCase_ : Any       ):
				_lowerCAmelCase    :    int										=      None

				# source code of `config_class`
				_lowerCAmelCase    :    Optional[int]										=      inspect.getsource(SCREAMING_SNAKE_CASE_       )
				_lowerCAmelCase    :    Dict										=      _re_checkpoint.findall(SCREAMING_SNAKE_CASE_       )

				# 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    :    Union[str, Any]										=      ckpt_link[:-1]

								# verify the checkpoint name corresponds to the checkpoint link
								_lowerCAmelCase    :    Dict										=      F"https://huggingface.co/{ckpt_name}"
								if ckpt_link == ckpt_link_from_name:
												_lowerCAmelCase    :    str										=      ckpt_name
												break

				return checkpoint




def 							_UpperCAmelCase  ():
				_lowerCAmelCase    :    Union[str, Any]										=      []

				for config_class in list(CONFIG_MAPPING.values()       ):
								# Skip deprecated models
								if "models.deprecated" in config_class.__module__:
												continue
								_lowerCAmelCase    :    Union[str, Any]										=      get_checkpoint_from_config_class(SCREAMING_SNAKE_CASE_       )

								_lowerCAmelCase    :    Optional[Any]										=      config_class.__name__
								if checkpoint is None and name not in CONFIG_CLASSES_TO_IGNORE_FOR_DOCSTRING_CHECKPOINT_CHECK:
												configs_without_checkpoint.append(SCREAMING_SNAKE_CASE_       )

				if len(SCREAMING_SNAKE_CASE_       ) > 0:
								_lowerCAmelCase    :    List[str]										=      '\n'.join(sorted(SCREAMING_SNAKE_CASE_       )       )
								raise ValueError(F"The following configurations don\'t contain any valid checkpoint:\n{message}"       )


if __name__ == "__main__":
	check_config_docstrings_have_checkpoints()







def 							_UpperCAmelCase  (UpperCamelCase_ : str       ):
				'''simple docstring'''
				_lowerCAmelCase    :    List[str]										=      [int(UpperCamelCase_       ) for i in ip_va_address.split("""."""       ) if i.isdigit()]
				return len(UpperCamelCase_       ) == 4 and all(0 <= int(UpperCamelCase_       ) <= 254 for octet in octets       )


if __name__ == "__main__":
	_lowerCamelCase      :  List[str]      						=						input().strip()
	_lowerCamelCase      :  int      						=						"valid" if is_ip_va_address_valid(ip) else "invalid"
	print(F'''{ip} is a {valid_or_invalid} IP v4 address.''')

