code: def list_recorders(experiment, rec_filter_func=None):
      """
      List all recorders which can pass the filter in an experiment.
  
      Args:
          experiment (str or Experiment): the name of an Experiment or an instance
          rec_filter_func (Callable, optional): return True to retain the given recorder. Defaults to None.
  
      Returns:
          dict: a dict {rid: recorder} after filtering.
      """
      if isinstance(experiment, str):
          experiment = R.get_exp(experiment_name=experiment)
      recs = experiment.list_recorders()
      recs_flt = {}
      for rid, rec in recs.items():
          if rec_filter_func is None or rec_filter_func(rec):
              recs_flt[rid] = rec
  
      return recs_flt
  
imports: import bisect
  from copy import deepcopy
  import pandas
  from qlib.data import D
  from qlib.utils import hash_args
  from qlib.utils.mod import init_instance_by_config
  from qlib.workflow import R
  from qlib.config import C
  from qlib.log import get_module_logger
  from pymongo import MongoClient
  from pymongo.database import Database
  from typing import Union
  from pathlib import Path
label_desc: Use image node_id 2 for calling a global function with example usage: list_recorders(experiment, rec_filter_func) and returns: recs_flt