code: def step(self, action):
      obs, rew, done, info = self.env.step(action)
      self._current_reward += rew
      self._num_steps += 1
      self._total_steps += 1
      if done:
          epinfo = {
              "r": self._current_reward,
              "l": self._num_steps,
              "t": round(time.time() - self.tstart, 6),
          }
          assert isinstance(info, dict)
          info["episode"] = epinfo
      return (obs, rew, done, info)
  
imports: import time
  import numpy
  from collections import deque
  import gym
  from gym import spaces
  from parl.env.compat_wrappers import CompatWrapper, is_gym_version_ge, V_NPRANDOM_CHANGED
  import cv2
label_desc: Use image node_id 3 for calling the MonitorEnv obj's underlying member method code with example usage: obj.step(action) and returns: obs,  rew,  done,  info