code: def save_sources(self, ex_info):
      base_dir = ex_info["base_dir"]
      source_info = []
      for s, _ in ex_info["sources"]:
          abspath = os.path.join(base_dir, s)
          if self.copy_sources:
              store_path = self.find_or_save(abspath, self.source_dir)
          else:
              store_path = abspath
          relative_source = os.path.relpath(
              str(store_path), self.basedir
          )
          source_info.append([s, relative_source])
      return source_info
  
imports: import json
  import os
  import os.path
  from pathlib import Path
  from typing import Optional
  import warnings
  from shutil import copyfile, SameFileError
  from sacred.commandline_options import cli_option
  from sacred.dependencies import get_digest
  from sacred.observers.base import RunObserver
  from sacred import optional
  from sacred.serializer import flatten
  from sacred.utils import PathType
label_desc: Use image node_id 9 for calling the FileStorageObserver obj's underlying member method code with example usage: obj.save_sources(ex_info) and returns: source_info