class_docstr: The subprocess.CalledProcessError with stripped stdout.
code: def __str__(self):
      str_list = (
          []
          if self.cmd_index is None
          else [
              f"Run cmd[{self.cmd_index}] failed with the following details."
          ]
      )
      str_list.append(super().__str__())
      out = {
          "stdout": self.stdout,
          "stderr": self.stderr,
      }
      for name, s in out.items():
          if s:
              subtitle = f"Last {self.LAST_N_LINES} lines of {name}:"
              last_n_line_str = self._get_last_n_line(
                  s, self.LAST_N_LINES
              ).strip()
              str_list.append(
                  f"{subtitle}\n{textwrap.indent(last_n_line_str, ' ' * 4)}"
              )
      return "\n".join(str_list)
  
file_path: ray/python/ray/_private/runtime_env/utils.py
imports: import asyncio
  import itertools
  import logging
  import subprocess
  import textwrap
  import types
  from typing import List
label_desc: Use image node_id 3 for calling the SubprocessCalledProcessError obj's underlying member method code with example usage: obj.__str__() and returns: str