class_docstr: An executor that executes SageMaker Pipelines locally.
class_docstr_tok: ["An","executor","that","executes","SageMaker","Pipelines","locally","."]
docstr: Evaluate JsonGet's property file reference to get s3 bucket and key
docstr_tok: ["Evaluate","JsonGet","'s","property","file","reference","to","get","s3","bucket","and","key"]
code: def _evaluate_json_get_property_file_reference(
      self, pipeline_variable: JsonGet, step_name: str
  ):
      """Evaluate JsonGet's property file reference to get s3 bucket and key"""
      property_file_reference = pipeline_variable.property_file
      property_file = None
      if isinstance(property_file_reference, str):
          processing_step = self.pipeline_dag.step_map[
              pipeline_variable.step_name
          ]
          for file in processing_step.property_files:
              if file.name == property_file_reference:
                  property_file = file
                  break
      elif isinstance(property_file_reference, PropertyFile):
          property_file = property_file_reference
      processing_step_response = self.execution.step_execution.get(
          pipeline_variable.step_name
      ).properties
      if (
          "ProcessingOutputConfig" not in processing_step_response
          or "Outputs"
          not in processing_step_response["ProcessingOutputConfig"]
      ):
          self.execution.update_step_failure(
              step_name,
              f"Step '{pipeline_variable.step_name}' does not yet contain processing outputs.",
          )
      processing_output_s3_bucket = processing_step_response[
          "ProcessingOutputConfig"
      ]["Outputs"][property_file.output_name]["S3Output"]["S3Uri"]
      s3_bucket, s3_key_prefix = parse_s3_url(
          processing_output_s3_bucket
      )
      s3_key = s3_path_join(s3_key_prefix, property_file.path)
      return s3_bucket, s3_key
  
imports: from __future__ import absolute_import
  from abc import ABC, abstractmethod
  import json
  from datetime import datetime
  from typing import Dict, List, Union
  from botocore.exceptions import ClientError
  from sagemaker.workflow.conditions import ConditionTypeEnum
  from sagemaker.workflow.function_step import DelayedReturn
  from sagemaker.workflow.steps import StepTypeEnum, Step
  from sagemaker.workflow.step_collections import StepCollection
  from sagemaker.workflow.entities import PipelineVariable
  from sagemaker.workflow.parameters import Parameter
  from sagemaker.workflow.functions import Join, JsonGet, PropertyFile
  from sagemaker.workflow.properties import Properties
  from sagemaker.workflow.execution_variables import ExecutionVariable, ExecutionVariables
  from sagemaker.workflow.pipeline import PipelineGraph
  from sagemaker.local.exceptions import StepExecutionException
  from sagemaker.local.utils import get_using_dot_notation
  from sagemaker.utils import unique_name_from_base
  from sagemaker.s3 import parse_s3_url, s3_path_join
label_desc: Use image node_id 11 for calling the LocalPipelineExecutor obj's underlying member method code with example usage: obj._evaluate_json_get_property_file_reference(pipeline_variable, step_name) and returns: s3_bucket,  s3_key