code: def nodelist_runner(nodes, updatehash=False, stop_first=False):
      """
      A generator that iterates and over a list of ``nodes`` and
      executes them.
  
      """
      for i, node in nodes:
          err = None
          result = None
          try:
              result = node.run(updatehash=updatehash)
          except Exception:
              if stop_first:
                  raise
  
              result = node.result
              err = []
              if result.runtime and hasattr(
                  result.runtime, "traceback"
              ):
                  err = [result.runtime.traceback]
  
              err += format_exception(*sys.exc_info())
              err = "\n".join(err)
          finally:
              yield i, result, err
  
imports: import os
  import sys
  import pickle
  from collections import defaultdict
  import re
  from copy import deepcopy
  from glob import glob
  from pathlib import Path
  from traceback import format_exception
  from hashlib import sha1
  from functools import reduce
  import numpy
  from ...None import logging, config
  from ...utils.filemanip import indirectory, relpath, fname_presuffix, ensure_list, get_related_files, save_json, savepkl, loadpkl, write_rst_header, write_rst_dict, write_rst_list
  from ...utils.misc import str2bool
  from ...utils.functions import create_function_from_source
  from ...interfaces.base.traits_extension import rebase_path_traits, resolve_path_traits, OutputMultiPath, isdefined, Undefined
  from ...interfaces.base.support import Bunch, InterfaceResult
  from ...interfaces.base import CommandLine
  from ...interfaces.utility import IdentityInterface
  from ...utils.provenance import ProvStore, pm, nipype_ns, get_id
  from inspect import signature
label_desc: Use image node_id 3 for calling a global function with example usage: nodelist_runner(nodes, updatehash, stop_first) without return types