code: def _are_pod_containers_done(self):
      # All containers in the pod have a containerStatus that has a
      # finishedAt set.
      container_statuses = self._pod.get("status", {}).get(
          "container_statuses", []
      )
      if not container_statuses:
          return False
  
      for cstatus in container_statuses:
          # If the terminated field is not set, the pod is still running. Too early
          # to determine if any container failed.
          terminated = cstatus.get("state", {}).get("terminated", {})
          if not terminated:
              return False
  
          # If the terminated field is set but the `finished_at` field is not set,
          # the pod is still considered as running.
          if not terminated.get("finished_at"):
              return False
  
      # If we got until here, the containers were marked terminated and their
      # finishedAt was set.
      return True
  
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 13 for calling the RunningJob obj's underlying member method code with example usage: obj._are_pod_containers_done() and returns: True, False, False, False