



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       lowercase				(   SCREAMING_SNAKE_CASE__       :	int				)  ->     List[str]:
 _snake_case    :  int					=					None

 # source code of `config_class`
 _snake_case    :  Optional[int]					=					inspect.getsource(SCREAMING_SNAKE_CASE_				)
 _snake_case    :  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("""/"""				):
   _snake_case    :  Union[str, Any]					=					ckpt_link[:-1]

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

 return checkpoint



def       lowercase				(   )  ->     int:
 _snake_case    :  Union[str, Any]					=					[]

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

  _snake_case    :  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:
  _snake_case    :  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()





import sys

a__    =	(
    """73167176531330624919225119674426574742355349194934"""
    """96983520312774506326239578318016984801869478851843"""
    """85861560789112949495459501737958331952853208805511"""
    """12540698747158523863050715693290963295227443043557"""
    """66896648950445244523161731856403098711121722383113"""
    """62229893423380308135336276614282806444486645238749"""
    """30358907296290491560440772390713810515859307960866"""
    """70172427121883998797908792274921901699720888093776"""
    """65727333001053367881220235421809751254540594752243"""
    """52584907711670556013604839586446706324415722155397"""
    """53697817977846174064955149290862569321978468622482"""
    """83972241375657056057490261407972968652414535100474"""
    """82166370484403199890008895243450658541227588666881"""
    """16427171479924442928230863465674813919123162824586"""
    """17866458359124566529476545682848912883142607690042"""
    """24219022671055626321111109370544217506941658960408"""
    """07198403850962455444362981230987879927244284909188"""
    """84580156166097919133875499200524063689912560717606"""
    """05886116467109405077541002256983155200055935729725"""
    """71636269561882670428252483600823257530420752963450"""
)



def       lowercase       (   SCREAMING_SNAKE_CASE__       :	str = N				)  ->     int:
 _snake_case    :  int					=					-sys.maxsize - 1
 for i in range(len(SCREAMING_SNAKE_CASE__				) - 12				):
  _snake_case    :  Optional[int]					=					1
  for j in range(13				):
   product *= int(n[i + j]				)
  if product > largest_product:
   _snake_case    :  List[str]					=					product
 return largest_product


if __name__ == "__main__":
  print(F'''{solution() = }''')
