code: def step_compilation_context_manager(
      pipeline_name: str,
      step_name: str,
      sagemaker_session,
      code_hash: str,
      config_hash: str,
      pipeline_definition_config: PipelineDefinitionConfig,
      upload_runtime_scripts: bool,
      upload_workspace: bool,
      pipeline_build_time: str,
      function_step_secret_token: Optional[str] = None,
  ):
      """Expose static _pipeline_config variable to other modules
  
      Args:
          pipeline_name (str): pipeline name
          step_name (str): step name
          sagemaker_session (sagemaker.session.Session): a sagemaker session
          code_hash (str): a hash of the code artifact for the particular step
          config_hash (str): a hash of the config artifact for the particular step (Processing)
          pipeline_definition_config (PipelineDefinitionConfig): a configuration used to toggle
              feature flags persistent in a pipeline definition
          upload_runtime_scripts (bool): flag used to manage upload of runtime scripts to s3 for
            a _FunctionStep in pipeline
          upload_workspace (bool): flag used to manage the upload of workspace to s3 for a
            _FunctionStep in pipeline
          pipeline_build_time (str): timestamp when the pipeline is being built
          function_step_secret_token (str): secret token used for the function step checksum
      """
  
      # pylint: disable=W0603
      global _pipeline_config
      _pipeline_config = _PipelineConfig(
          pipeline_name=pipeline_name,
          step_name=step_name,
          sagemaker_session=sagemaker_session,
          code_hash=code_hash,
          config_hash=config_hash,
          pipeline_definition_config=pipeline_definition_config,
          upload_runtime_scripts=upload_runtime_scripts,
          upload_workspace=upload_workspace,
          pipeline_build_time=pipeline_build_time,
          function_step_secret_token=function_step_secret_token,
      )
      try:
          yield _pipeline_config
      finally:
          _pipeline_config = 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 2 for calling a global function with example usage: step_compilation_context_manager(pipeline_name, step_name, sagemaker_session, code_hash, config_hash, pipeline_definition_config, upload_runtime_scripts, upload_workspace, pipeline_build_time, function_step_secret_token) without return types