


'''simple docstring'''



import importlib
import inspect
import os
import re


# 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    :Any				       =     "src/transformers"


# This is to make sure the transformers module imported is the one in the repo.
__UpperCAmelCase    :int				       =     importlib.util.spec_from_file_location(
    "transformers",
    os.path.join(PATH_TO_TRANSFORMERS, "__init__.py"),
    submodule_search_locations=[PATH_TO_TRANSFORMERS],
)
__UpperCAmelCase    :Any				       =     spec.loader.load_module()

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


__UpperCAmelCase    :List[str]				       =     {
    "CLIPConfigMixin",
    "DecisionTransformerConfigMixin",
    "EncoderDecoderConfigMixin",
    "RagConfigMixin",
    "SpeechEncoderDecoderConfigMixin",
    "VisionEncoderDecoderConfigMixin",
    "VisionTextDualEncoderConfigMixin",
}




def 			_a			(		):





     '''simple docstring'''






     __UpperCAmelCase			:				Tuple													=    []

     for config_class in list(CONFIG_MAPPING.values()						):
          __UpperCAmelCase			:				Dict													=    False

          # source code of `config_class`
          __UpperCAmelCase			:				Tuple													=    inspect.getsource(_lowercase						)
          __UpperCAmelCase			:				Any													=    _re_checkpoint.findall(_lowercase						)

          for checkpoint in checkpoints:
               # Each `checkpoint` is a tuple of a checkpoint name and a checkpoint link.
               # For example, `('bert-base-uncased', 'https://huggingface.co/bert-base-uncased')`
               __UpperCAmelCase							,     __UpperCAmelCase			:				Tuple													=    checkpoint

               # verify the checkpoint name corresponds to the checkpoint link
               __UpperCAmelCase			:				List[Any]													=    F'https://huggingface.co/{ckpt_name}'
               if ckpt_link == ckpt_link_from_name:
                    __UpperCAmelCase			:				Optional[int]													=    True
                    break

          __UpperCAmelCase			:				Union[str, Any]													=    config_class.__name__
          if not checkpoint_found and name not in CONFIG_CLASSES_TO_IGNORE_FOR_DOCSTRING_CHECKPOINT_CHECK:
               configs_without_checkpoint.append(_lowercase						)

     if len(_lowercase						) > 0:
          __UpperCAmelCase			:				Tuple													=    '''\n'''.join(sorted(_lowercase						)						)
          raise ValueError(F'The following configurations don\'t contain any valid checkpoint:\n{message}'						)


if __name__ == "__main__":
      check_config_docstrings_have_checkpoints()



'''simple docstring'''



def 			_a			(		_lowercase      :			list[list[int]]    ,      _lowercase      :			int    ,      _lowercase      :			int    ,      _lowercase      :			set						):





     '''simple docstring'''






     __UpperCAmelCase							,     __UpperCAmelCase			:				Any													=    len(_lowercase						), len(grid[0]						)
     if (
         min(_lowercase    ,      _lowercase						) < 0
         or row == row_length
         or col == col_length
         or (row, col) in visit
         or grid[row][col] == 1
     ):
          return 0
     if row == row_length - 1 and col == col_length - 1:
          return 1

     visit.add((row, col)						)

     __UpperCAmelCase			:				Optional[Any]													=    0
     count += depth_first_search(_lowercase    ,      row + 1    ,      _lowercase    ,      _lowercase						)
     count += depth_first_search(_lowercase    ,      row - 1    ,      _lowercase    ,      _lowercase						)
     count += depth_first_search(_lowercase    ,      _lowercase    ,      col + 1    ,      _lowercase						)
     count += depth_first_search(_lowercase    ,      _lowercase    ,      col - 1    ,      _lowercase						)

     visit.remove((row, col)						)
     return count


if __name__ == "__main__":
      import doctest

      doctest.testmod()