code: def get_processing_code_hash(
      code: str, source_dir: str, dependencies: List[str]
  ) -> str:
      """Get the hash of a processing step's code artifact(s).
  
      Args:
          code (str): Path to a file with the processing script to run
          source_dir (str): Path to a directory with any other processing
                  source code dependencies aside from the entry point file
          dependencies (str): A list of paths to directories (absolute
                  or relative) with any additional libraries that will be exported
                  to the container
      Returns:
          str: A hash string representing the unique code artifact(s) for the step
      """
  
      # FrameworkProcessor
      if source_dir:
          source_dir_url = urlparse(source_dir)
          if (
              source_dir_url.scheme == ""
              or source_dir_url.scheme == "file"
          ):
              # Include code in the hash when possible
              if code:
                  code_url = urlparse(code)
                  if code_url.scheme == "" or code_url.scheme == "file":
                      return hash_files_or_dirs(
                          [code, source_dir] + dependencies
                      )
              return hash_files_or_dirs([source_dir] + dependencies)
      # Other Processors - Spark, Script, Base, etc.
      if code:
          code_url = urlparse(code)
          if code_url.scheme == "" or code_url.scheme == "file":
              return hash_files_or_dirs([code] + dependencies)
      return None
  
imports: from __future__ import absolute_import
  import inspect
  import logging
  from functools import wraps
  from pathlib import Path
  from typing import List, Sequence, Union, Set, TYPE_CHECKING, Optional
  import hashlib
  from urllib.parse import unquote, urlparse
  from contextlib import contextmanager
  from _hashlib import HASH
  from sagemaker.utils import base_from_name
  from sagemaker.workflow.parameters import Parameter
  from sagemaker.workflow.pipeline_context import _StepArguments, _PipelineConfig
  from sagemaker.workflow.entities import Entity, RequestType
  from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
label_desc: Use image node_id 6 for calling a global function with example usage: get_processing_code_hash(code, source_dir, dependencies) and returns: None, hash_files_or_dirs, hash_files_or_dirs, hash_files_or_dirs