code: def _prepare_and_upload_spark_dependent_files(
      spark_config: SparkConfig,
      s3_base_uri: str,
      s3_kms_key: str,
      sagemaker_session: Session,
  ) -> Tuple:
      """Upload the Spark dependencies to S3 if present.
  
      Args:
          spark_config (SparkConfig): The remote Spark job configurations.
          s3_base_uri (str): The S3 location that the Spark dependencies will be uploaded to.
          s3_kms_key (str): The kms key used to encrypt the files uploaded to S3.
          sagemaker_session (str): SageMaker boto client session.
      """
      if not spark_config:
          return None, None, None, None
  
      submit_jars_s3_paths = _upload_spark_submit_deps(
          spark_config.submit_jars,
          SPARK_SUBMIT_JARS_WORKSPACE,
          s3_base_uri,
          s3_kms_key,
          sagemaker_session,
      )
      submit_py_files_s3_paths = _upload_spark_submit_deps(
          spark_config.submit_py_files,
          SPARK_SUBMIT_PY_FILES_WORKSPACE,
          s3_base_uri,
          s3_kms_key,
          sagemaker_session,
      )
      submit_files_s3_path = _upload_spark_submit_deps(
          spark_config.submit_files,
          SPARK_SUBMIT_FILES_WORKSPACE,
          s3_base_uri,
          s3_kms_key,
          sagemaker_session,
      )
      config_file_s3_uri = _upload_serialized_spark_configuration(
          s3_base_uri,
          s3_kms_key,
          spark_config.configuration,
          sagemaker_session,
      )
  
      return (
          submit_jars_s3_paths,
          submit_py_files_s3_paths,
          submit_files_s3_path,
          config_file_s3_uri,
      )
  
imports: from __future__ import absolute_import
  import dataclasses
  import os
  import re
  import shutil
  import sys
  import json
  import secrets
  from typing import Callable, Dict, List, Optional, Tuple, Union, TYPE_CHECKING
  from urllib.parse import urlparse
  from io import BytesIO
  from sagemaker.config.config_schema import REMOTE_FUNCTION_ENVIRONMENT_VARIABLES, REMOTE_FUNCTION_IMAGE_URI, REMOTE_FUNCTION_DEPENDENCIES, REMOTE_FUNCTION_PRE_EXECUTION_COMMANDS, REMOTE_FUNCTION_PRE_EXECUTION_SCRIPT, REMOTE_FUNCTION_INCLUDE_LOCAL_WORKDIR, REMOTE_FUNCTION_INSTANCE_TYPE, REMOTE_FUNCTION_JOB_CONDA_ENV, REMOTE_FUNCTION_ROLE_ARN, REMOTE_FUNCTION_S3_ROOT_URI, REMOTE_FUNCTION_S3_KMS_KEY_ID, REMOTE_FUNCTION_VOLUME_KMS_KEY_ID, REMOTE_FUNCTION_TAGS, REMOTE_FUNCTION_VPC_CONFIG_SUBNETS, REMOTE_FUNCTION_VPC_CONFIG_SECURITY_GROUP_IDS, REMOTE_FUNCTION_ENABLE_INTER_CONTAINER_TRAFFIC_ENCRYPTION
  from sagemaker.experiments._run_context import _RunContext
  from sagemaker.experiments.run import Run
  from sagemaker.image_uris import get_base_python_image_uri
  from sagemaker import image_uris
  from sagemaker.remote_function.checkpoint_location import CheckpointLocation
  from sagemaker.session import get_execution_role, _logs_for_job, Session
  from sagemaker.utils import name_from_base, _tmpdir, resolve_value_from_config, format_tags, Tags
  from sagemaker.s3 import s3_path_join, S3Uploader
  from sagemaker import vpc_utils
  from sagemaker.remote_function.core.stored_function import StoredFunction, _SerializedData
  from sagemaker.remote_function.core.pipeline_variables import Context
  from sagemaker.remote_function.runtime_environment.runtime_environment_manager import RuntimeEnvironmentManager, _DependencySettings
  from sagemaker.remote_function import logging_config
  from sagemaker.remote_function.spark_config import SparkConfig
  from sagemaker.spark import defaults
  from sagemaker.remote_function.custom_file_filter import CustomFileFilter, copy_workdir, resolve_custom_file_filter_from_config_file
label_desc: Use image node_id 6 for calling a global function with example usage: _prepare_and_upload_spark_dependent_files(spark_config, s3_base_uri, s3_kms_key, sagemaker_session) and returns: submit_jars_s3_paths,  submit_py_files_s3_paths,  submit_files_s3_path,  config_file_s3_uri, None,  None,  None,  None