code: def _get_local_objs_to_upload_and_s3_prefix(
      folder_to_upload: str,
  ) -> List[Tuple[str, str]]:
      """
      Get paths to all the objects within a folder and it's subfolder and their relative path to maintain the folder structure
  
      Parameters
      ----------
      folder_to_upload: str
          The local folder to upload to s3
  
      Returns
      --------
      List[Tuple[str, str]],
          where each element is a tuple consisted with the local path to an object and its relative path to maintain the folder structure
      """
      files_to_upload = []
      for root, _, files in os.walk(folder_to_upload):
          for file in files:
              file_full_path = os.path.join(root, file)
              file_relative_path = os.path.relpath(
                  file_full_path, folder_to_upload
              )
              files_to_upload.append(
                  (file_full_path, file_relative_path)
              )
      return files_to_upload
  
file_path: autogluon/common/src/autogluon/common/utils/s3_utils.py
imports: import logging
  import os
  import pathlib
  import shutil
  from typing import Dict, List, Optional, Tuple, Union
  from tqdm import tqdm
  from ..loaders.load_s3 import list_bucket_prefix_suffix_contains_s3
label_desc: Use image node_id 12 for calling a global function with example usage: _get_local_objs_to_upload_and_s3_prefix(folder_to_upload) and returns: files_to_upload