class_docstr: Provides platform-agnostic path substitution for execution Makefiles, ensuring that POSIX-style
  relative paths are joined correctly with POSIX-style or Windows-style recipe root paths.
  
  For example, given a format string `s = "{path:prp/my/subpath.txt}"`, invoking
  `s.format(path=_MakefilePathFormat(recipe_root_path="/my/recipe/root/path", ...))` on
  Unix systems or
  `s.format(path=_MakefilePathFormat(recipe_root_path="C:\my\recipe\root\path", ...))`` on
  Windows systems will yield "/my/recipe/root/path/my/subpath.txt" or
  "C:/my/recipe/root/path/my/subpath.txt", respectively.
  
  Additionally, given a format string `s = "{path:exe/my/subpath.txt}"`, invoking
  `s.format(path=_MakefilePathFormat(execution_directory_path="/my/exe/dir/path", ...))` on
  Unix systems or
  `s.format(path=_MakefilePathFormat(execution_directory_path="/my/exe/dir/path", ...))`` on
  Windows systems will yield "/my/exe/dir/path/my/subpath.txt" or
  "C:/my/exe/dir/path/my/subpath.txt", respectively.
class_docstr_tok: ["Provides","platform-agnostic","path","substitution","for","execution","Makefiles",",","ensuring","that","POSIX-style","relative","paths","are","joined","correctly","with","POSIX-style","or","Windows-style","recipe","root","paths",".","For","example",",","given","a","format","string","`","s","=","``","{","path",":","prp\/my\/subpath.txt","}","''","`",",","invoking","`","s.format","(","path=_MakefilePathFormat","(","recipe_root_path=","''","\/my\/recipe\/root\/path","''",",","...",")",")","`","on","Unix","systems","or","`","s.format","(","path=_MakefilePathFormat","(","recipe_root_path=","''","C",":","\\my\\recipe\\root\\path","''",",","...",")",")","``","on","Windows","systems","will","yield","``","\/my\/recipe\/root\/path\/my\/subpath.txt","''","or","''","C",":","\/my\/recipe\/root\/path\/my\/subpath.txt","''",",","respectively",".","Additionally",",","given","a","format","string","`","s","=","``","{","path",":","exe\/my\/subpath.txt","}","''","`",",","invoking","`","s.format","(","path=_MakefilePathFormat","(","execution_directory_path=","''","\/my\/exe\/dir\/path","''",",","...",")",")","`","on","Unix","systems","or","`","s.format","(","path=_MakefilePathFormat","(","execution_directory_path=","''","\/my\/exe\/dir\/path","''",",","...",")",")","``","on","Windows","systems","will","yield","``","\/my\/exe\/dir\/path\/my\/subpath.txt","''","or","''","C",":","\/my\/exe\/dir\/path\/my\/subpath.txt","''",",","respectively","."]
docstr: :param recipe_root_path: The absolute path of the recipe root directory on the local
                             filesystem.
  :param execution_directory_path: The absolute path of the execution directory on the local
                                   filesystem for the recipe.
docstr_tok: [":","param","recipe_root_path",":","The","absolute","path","of","the","recipe","root","directory","on","the","local","filesystem",".",":","param","execution_directory_path",":","The","absolute","path","of","the","execution","directory","on","the","local","filesystem","for","the","recipe","."]
code: def __init__(
      self, recipe_root_path: str, execution_directory_path: str
  ):
      """
      :param recipe_root_path: The absolute path of the recipe root directory on the local
                                 filesystem.
      :param execution_directory_path: The absolute path of the execution directory on the local
                                       filesystem for the recipe.
      """
      self.recipe_root_path = recipe_root_path
      self.execution_directory_path = execution_directory_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 1 to create a new _MakefilePathFormat object  with example: obj = _MakefilePathFormat(recipe_root_path, execution_directory_path)