code: def check_docstrings(
      base_folder=".",
      check_folders=["speechbrain", "tools", "templates"],
  ):
      """Checks if all the functions or classes have a docstring.
  
      Arguments
      ---------
      base_folder: path
          The main folder of speechbrain.
      check_folders: list
          List of subfolders to check.
  
      Returns
      -------
      check: bool
          True if all the functions/classes have a docstring, False otherwise.
      """
      # Search all python libraries in the folder of interest
      lib_lst = get_all_files(
          base_folder,
          match_and=[".py"],
          match_or=check_folders,
          exclude_or=[".pyc"],
      )
      check = True
      # Loop over the detected libraries
      for libpath in lib_lst:
          if "__" in libpath:
              continue
          print("Checking %s..." % (libpath))
  
          # Support variable initalization
          fun_name = libpath
          class_name = libpath
          check_line = True
          is_class = False
          first_line = True
          with open(libpath) as f:
              for line in f:
                  # Remove spaces or tabs
                  line = line.strip()
  
                  # Avoid processing lines with the following patterns
                  if ">>>" in line:
                      continue
                  if "..." in line:
                      continue
                  if len(line) == 0:
                      continue
                  if line[0] == "#":
                      continue
  
                  # Check if the docstring is written after the class/funct declaration
                  if check_line:
                      if line[0] != '"' and not (is_class):
                          if line[0:2] == 'r"':
                              check_line = False
                              continue
                          check = False
                          if first_line:
                              print(
                                  "\tERROR: The library %s must start with a docstring. "
                                  % (libpath)
                                  + "Please write it. For more info, see tests/consistency/DOCSTRINGS.md"
                              )
                          else:
                              print(
                                  "\tERROR: The function %s in %s has no docstring. "
                                  % (fun_name, libpath)
                                  + "Please write it. For more info, see tests/consistency/DOCSTRINGS.md"
                              )
                      if line[0] != '"' and is_class:
                          if line[0:2] == 'r"':
                              check_line = False
                              continue
  
                          check = False
                          print(
                              "\tERROR: The class %s in %s has no docstring. "
                              % (class_name, libpath)
                              + "Please write it. For more info, see tests/consistency/DOCSTRINGS.md"
                          )
  
                      # Update support variables
                      check_line = False
                      is_class = False
                      first_line = False
                      continue
  
                  # Extract function name (if any)
                  fun_name = extractName(line)
                  if len(fun_name) > 0 and line[0:3] == "def":
                      if fun_name[0] == "_":
                          continue
                      check_line = True
  
                  # Extract class name (if any)
                  class_name = extractName(line, search_class=True)
                  if len(class_name) > 0 and line[0:5] == "class":
                      check_line = True
                      is_class = True
      return check
  
imports: import re
  from speechbrain.utils.data_utils import get_all_files
label_desc: Use image node_id 2 for calling a global function with example usage: check_docstrings(base_folder, check_folders) and returns: check