class_docstr: This is run on Buildkite runners.
class_docstr_tok: ["This","is","run","on","Buildkite","runners","."]
docstr: Run prepare command.
  
  Command runners may choose to run this differently than the
  test command.
docstr_tok: ["Run","prepare","command",".","Command","runners","may","choose","to","run","this","differently","than","the","test","command","."]
code: def run_prepare_command(
      self,
      command: str,
      env: Optional[Dict] = None,
      timeout: float = 3600.0,
  ):
      """Run prepare command.
  
      Command runners may choose to run this differently than the
      test command.
      """
      return exponential_backoff_retry(
          lambda: self.run_command(command, env, timeout),
          ClickException,
          initial_retry_delay_s=5,
          max_retries=3,
      )
  
imports: import abc
  from typing import Dict, Any, Optional, List
  from ray_release.cluster_manager.cluster_manager import ClusterManager
  from ray_release.file_manager.file_manager import FileManager
  from ray_release.reporter.artifacts import DEFAULT_ARTIFACTS_DIR
  from ray_release.util import exponential_backoff_retry
  from ray_release.logger import logger
  from click.exceptions import ClickException
label_desc: Use image node_id 9 for calling the CommandRunner obj's underlying member method code with example usage: obj.run_prepare_command(command, env, timeout) and returns: exponential_backoff_retry