docs: def elapsed_time(self) -> float:
          """
          The number of seconds that has elapsed since the step started running
          if the step is still running. Or, if the step has already finished
          running, the amount of time that elapsed during the last execution of
          the step.
          """
          current_time = datetime.utcnow()
          start = self.start_time or current_time
          end = self.end_time or current_time
          return (end - start).total_seconds()