code: def fetch_metrics(self) -> Dict[str, Any]:
      if not self._metrics_uploaded:
          raise FetchResultError(
              "Could not fetch metrics from session as they were not uploaded."
          )
      return self._fetch_json(
          join_cloud_storage_paths(
              self.path_in_bucket, self._METRICS_OUTPUT_JSON
          )
      )
  
imports: import json
  import os
  import re
  import tempfile
  import shlex
  from typing import TYPE_CHECKING, Any, Dict, Optional, List
  from ray_release.cluster_manager.cluster_manager import ClusterManager
  from ray_release.command_runner.job_runner import JobRunner
  from ray_release.exception import TestCommandTimeout, TestCommandError, JobOutOfRetriesError, PrepareCommandError, PrepareCommandTimeout, JobBrokenError, FetchResultError, JobTerminatedBeforeStartError, JobNoLogsError, JobTerminatedError
  from ray_release.file_manager.job_file_manager import JobFileManager
  from ray_release.job_manager import AnyscaleJobManager
  from ray_release.logger import logger
  from ray_release.util import join_cloud_storage_paths, generate_tmp_cloud_storage_path, get_anyscale_sdk, S3_CLOUD_STORAGE
label_desc: Use image node_id 11 for calling the AnyscaleJobRunner obj's underlying member method code with example usage: obj.fetch_metrics() and returns: self