code: def save_directory(self, source_dir, target_name):
      target_name = target_name or os.path.basename(source_dir)
      all_files = []
      for root, dirs, files in os.walk(source_dir):
          all_files += [os.path.join(root, f) for f in files]
  
      for filename in all_files:
          file_location = gcs_join(
              self.dir,
              target_name,
              os.path.relpath(filename, source_dir),
          )
          self.put_data(file_location, open(filename, "rb"))
  
imports: import json
  import os
  import os.path
  import re
  from typing import Optional
  from sacred.commandline_options import cli_option
  from sacred.dependencies import get_digest
  from sacred.observers.base import RunObserver
  from sacred.serializer import flatten
  from sacred.utils import PathType
label_desc: Use image node_id 13 for calling the GoogleCloudStorageObserver obj's underlying member method code with example usage: obj.save_directory(source_dir, target_name) without return types