code: def _prepare_estimator_request_from_remote_decorator_config(
      remote_decorator_config: _JobSettings,
      s3_base_uri: str,
      client_python_version: str,
      spark_dependency_paths: Dict[str, Optional[str]],
  ) -> Dict[str, Union[str, int, List]]:
      """Prepares request dictionary used for Estimator creation.
  
      Args:
          remote_decorator_config (_JobSettings): Configurations used for setting up
              SageMaker Pipeline Step.
          s3_base_uri (str): S3 URI used as destination for dependencies upload.
          client_python_version (str): Python version used on client side.
          spark_dependency_paths (Dict[str, Optional[str]]): A dictionary contains S3 paths spark
              dependency files get uploaded to if present.
      Returns:
          Dict[str, List[str]]: Request dictionary containing configurations for Estimator creation.
      """
      estimator_request_dict = dict(
          role=remote_decorator_config.role,
          max_run=remote_decorator_config.max_runtime_in_seconds,
          max_retry_attempts=remote_decorator_config.max_retry_attempts,
          output_path=s3_base_uri,
          output_kms_key=remote_decorator_config.s3_kms_key,
          image_uri=remote_decorator_config.image_uri,
          input_mode="File",
          volume_size=remote_decorator_config.volume_size,
          volume_kms_key=remote_decorator_config.volume_kms_key,
          instance_count=remote_decorator_config.instance_count,
          instance_type=remote_decorator_config.instance_type,
          encrypt_inter_container_traffic=remote_decorator_config.encrypt_inter_container_traffic,
          environment=remote_decorator_config.environment_variables
          or {},
      )
  
      estimator_request_dict["environment"][
          EXECUTION_TIME_PIPELINE_PARAMETER
      ] = SCHEDULED_TIME_PIPELINE_PARAMETER
  
      if remote_decorator_config.tags:
          estimator_request_dict["tags"] = [
              {"Key": k, "Value": v}
              for k, v in remote_decorator_config.tags
          ]
      if remote_decorator_config.vpc_config:
          estimator_request_dict[
              "subnets"
          ] = remote_decorator_config.vpc_config[SUBNETS_KEY]
          estimator_request_dict[
              "security_group_ids"
          ] = remote_decorator_config.vpc_config[SECURITY_GROUP_IDS_KEY]
  
      estimator_request_dict.update(
          **_get_container_entry_point_and_arguments(
              remote_decorator_config=remote_decorator_config,
              s3_base_uri=s3_base_uri,
              client_python_version=client_python_version,
              spark_dependency_paths=spark_dependency_paths,
          )
      )
  
      return estimator_request_dict
  
imports: from __future__ import absolute_import
  import logging
  import json
  import re
  from datetime import datetime
  from typing import Callable, List, Optional, Dict, Sequence, Union, Any, Tuple
  import pytz
  from botocore.exceptions import ClientError
  from sagemaker.feature_store.feature_processor._config_uploader import ConfigUploader
  from sagemaker.feature_store.feature_processor._enums import FeatureProcessorMode
  from sagemaker.feature_store.feature_processor._event_bridge_rule_helper import EventBridgeRuleHelper
  from sagemaker.feature_store.feature_processor._feature_processor_pipeline_events import FeatureProcessorPipelineEvents
  from sagemaker.feature_store.feature_processor.lineage._feature_processor_lineage_name_helper import _get_feature_group_lineage_context_name, _get_feature_group_pipeline_lineage_context_name, _get_feature_group_pipeline_version_lineage_context_name, _get_feature_processor_pipeline_lineage_context_name, _get_feature_processor_pipeline_version_lineage_context_name
  from sagemaker.lineage import context
  from sagemaker.lineage._utils import get_resource_name_from_arn
  from sagemaker.remote_function.runtime_environment.runtime_environment_manager import RuntimeEnvironmentManager
  from sagemaker.remote_function.spark_config import SparkConfig
  from sagemaker.vpc_utils import SUBNETS_KEY, SECURITY_GROUP_IDS_KEY
  from sagemaker.feature_store.feature_processor._constants import EXECUTION_TIME_PIPELINE_PARAMETER, EXECUTION_TIME_PIPELINE_PARAMETER_FORMAT, RESOURCE_NOT_FOUND_EXCEPTION, SPARK_JAR_FILES_PATH, SPARK_PY_FILES_PATH, SPARK_FILES_PATH, FEATURE_PROCESSOR_TAG_KEY, FEATURE_PROCESSOR_TAG_VALUE, PIPELINE_CONTEXT_TYPE, DEFAULT_SCHEDULE_STATE, SCHEDULED_TIME_PIPELINE_PARAMETER, PIPELINE_CONTEXT_NAME_TAG_KEY, PIPELINE_VERSION_CONTEXT_NAME_TAG_KEY, PIPELINE_NAME_MAXIMUM_LENGTH, RESOURCE_NOT_FOUND, FEATURE_GROUP_ARN_REGEX_PATTERN, TO_PIPELINE_RESERVED_TAG_KEYS, DEFAULT_TRIGGER_STATE, EVENTBRIDGE_RULE_ARN_REGEX_PATTERN
  from sagemaker.feature_store.feature_processor._feature_processor_config import FeatureProcessorConfig
  from sagemaker.s3 import s3_path_join
  from sagemaker import Session, get_execution_role
  from sagemaker.feature_store.feature_processor._event_bridge_scheduler_helper import EventBridgeSchedulerHelper
  from sagemaker.workflow.pipeline import Pipeline
  from sagemaker.workflow.retry import StepRetryPolicy, StepExceptionTypeEnum, SageMakerJobStepRetryPolicy, SageMakerJobExceptionTypeEnum
  from sagemaker.workflow.steps import TrainingStep
  from sagemaker.estimator import Estimator
  from sagemaker.feature_store.feature_processor.lineage._feature_processor_lineage import FeatureProcessorLineageHandler, TransformationCode
  from sagemaker.remote_function.job import _JobSettings, JOBS_CONTAINER_ENTRYPOINT, SPARK_APP_SCRIPT_PATH
  from sagemaker.feature_store.feature_processor._data_source import CSVDataSource, FeatureGroupDataSource, ParquetDataSource
label_desc: Use image node_id 16 for calling a global function with example usage: _prepare_estimator_request_from_remote_decorator_config(remote_decorator_config, s3_base_uri, client_python_version, spark_dependency_paths) and returns: estimator_request_dict