code: def __init__(
      self,
      cluster_manager: ClusterManager,
      file_manager: JobFileManager,
      working_dir: str,
      sdk: Optional["AnyscaleSDK"] = None,
      artifact_path: Optional[str] = None,
  ):
      super().__init__(
          cluster_manager=cluster_manager,
          file_manager=file_manager,
          working_dir=working_dir,
      )
      self.sdk = sdk or get_anyscale_sdk()
      self.job_manager = AnyscaleJobManager(cluster_manager)
  
      self.last_command_scd_id = None
      self.path_in_bucket = join_cloud_storage_paths(
          "working_dirs",
          self.cluster_manager.test.get_name().replace(" ", "_"),
          generate_tmp_cloud_storage_path(),
      )
      # The root cloud storage bucket path. result, metric, artifact files
      # will be uploaded to under it on cloud storage.
      cloud_storage_provider = os.environ.get(
          "ANYSCALE_CLOUD_STORAGE_PROVIDER",
          S3_CLOUD_STORAGE,
      )
      self.upload_path = join_cloud_storage_paths(
          f"{cloud_storage_provider}://{self.file_manager.bucket}",
          self.path_in_bucket,
      )
      self.output_json = "/tmp/output.json"
      self.prepare_commands = []
      self._wait_for_nodes_timeout = 0
  
      self._results_uploaded = True
      self._metrics_uploaded = True
  
      # artifact related
      # user provided path to where they write the artifact to.
      self._artifact_path = artifact_path
      self._artifact_uploaded = artifact_path is not None
  
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 1 to create a new AnyscaleJobRunner object from inherited base classes: JobRunner with example: obj = AnyscaleJobRunner(cluster_manager, file_manager, working_dir, sdk, artifact_path)