code: def reason(self):
      if self.is_done:
          if self.has_succeeded:
              return 0, None
          # Best effort since Pod object can disappear on us at anytime
          else:
              if self._pod.get("status", {}).get("phase") not in (
                  "Succeeded",
                  "Failed",
              ):
                  # If pod status is dirty, check for newer status
                  self._pod = self._fetch_pod()
              if self._pod:
                  if (
                      self._pod.get("status", {}).get(
                          "container_statuses"
                      )
                      is None
                  ):
                      # We're done, but no container_statuses is set
                      # This can happen when the pod is evicted
                      return None, ": ".join(
                          filter(
                              None,
                              [
                                  self._pod.get("status", {}).get(
                                      "reason"
                                  ),
                                  self._pod.get("status", {}).get(
                                      "message"
                                  ),
                              ],
                          )
                      )
  
                  for k, v in (
                      self._pod.get("status", {})
                      .get("container_statuses", [{}])[0]
                      .get("state", {})
                      .items()
                  ):
                      if v is not None:
                          return v.get("exit_code"), ": ".join(
                              filter(
                                  None,
                                  [v.get("reason"), v.get("message")],
                              )
                          )
      return None, None
  
imports: import json
  import math
  import random
  import time
  from metaflow.tracing import inject_tracing_vars
  from metaflow.exception import MetaflowException
  from metaflow.metaflow_config import KUBERNETES_SECRETS
label_desc: Use image node_id 16 for calling the RunningJob obj's underlying member method code with example usage: obj.reason() and returns: None,  None, int,  None, None,  str, v,  str