class_docstr: Base class representing a step in an MLflow Recipe
code: def _update_status(
      self,
      status: StepStatus,
      output_directory: str,
      stack_trace: Optional[str] = None,
  ) -> None:
      execution_state = StepExecutionState(
          status=status,
          last_updated_timestamp=time.time(),
          stack_trace=stack_trace,
      )
      with open(
          os.path.join(
              output_directory, BaseStep._EXECUTION_STATE_FILE_NAME
          ),
          "w",
      ) as f:
          json.dump(execution_state.to_dict(), f)
  
imports: import abc
  import json
  import logging
  import os
  import time
  import traceback
  from enum import Enum
  from typing import Any, Dict, List, Optional
  import yaml
  from mlflow.recipes.cards import CARD_HTML_NAME, CARD_PICKLE_NAME, BaseCard, FailureCard
  from mlflow.recipes.utils import get_recipe_name
  from mlflow.recipes.utils.step import display_html
  from mlflow.tracking import MlflowClient
  from mlflow.utils.databricks_utils import is_in_databricks_runtime
label_desc: Use image node_id 15 for calling the BaseStep obj's underlying member method code with example usage: obj._update_status(status, output_directory, stack_trace) without return types