code: def get_progress(self):
      if self.map_refs:
          ready, self.map_refs = ray.wait(
              self.map_refs,
              timeout=1,
              num_returns=len(self.map_refs),
              fetch_local=False,
          )
          if ready:
              print("Still waiting on map refs", self.map_refs)
          self.num_map += len(ready)
      elif self.reduce_refs:
          ready, self.reduce_refs = ray.wait(
              self.reduce_refs,
              timeout=1,
              num_returns=len(self.reduce_refs),
              fetch_local=False,
          )
          if ready:
              print("Still waiting on reduce refs", self.reduce_refs)
          self.num_reduce += len(ready)
      return self.num_map, self.num_reduce
  
imports: import sys
  import random
  import string
  import ray
  import pytest
  import time
  from ray.experimental import shuffle
  from ray.tests.conftest import _ray_start_chaos_cluster
  from ray.data._internal.progress_bar import ProgressBar
  from ray.util.placement_group import placement_group
  from ray._private.test_utils import NodeKillerActor, get_log_message, get_and_run_resource_killer, WorkerKillerActor, wait_for_condition
  from ray.exceptions import RayTaskError, ObjectLostError
  from ray.util.state.common import ListApiOptions, StateResource
  from ray.util.state.api import StateApiClient, list_nodes
  from ray.cluster_utils import AutoscalingCluster
label_desc: Use image node_id 3 for calling the ShuffleStatusTracker obj's underlying member method code with example usage: obj.get_progress() and returns: self,  self