code: def get_or_create_base_execution_directory(
      recipe_root_path: str,
  ) -> str:
      """
      Obtains the path of the execution directory on the local filesystem corresponding to the
      specified recipe. The directory is created if it does not exist.
  
      :param recipe_root_path: The absolute path of the recipe root directory on the local
                                 filesystem.
      :return: The path of the execution directory on the local filesystem corresponding to the
               specified recipe.
      """
      execution_directory_basename = _get_execution_directory_basename(
          recipe_root_path=recipe_root_path
      )
  
      execution_dir_path = os.path.abspath(
          MLFLOW_RECIPES_EXECUTION_DIRECTORY.get()
          or os.path.join(
              os.path.expanduser("~"),
              ".mlflow",
              "recipes",
              execution_directory_basename,
          )
      )
      os.makedirs(execution_dir_path, exist_ok=True)
      return execution_dir_path
  
imports: import hashlib
  import logging
  import os
  import pathlib
  import re
  import shutil
  from typing import Dict, List
  from mlflow.environment_variables import MLFLOW_RECIPES_EXECUTION_DIRECTORY, MLFLOW_RECIPES_EXECUTION_TARGET_STEP_NAME
  from mlflow.recipes.step import BaseStep, StepStatus
  from mlflow.utils.file_utils import read_yaml, write_yaml
  from mlflow.utils.process import _exec_cmd
label_desc: Use image node_id 6 for calling a global function with example usage: get_or_create_base_execution_directory(recipe_root_path) and returns: execution_dir_path