code: def _prepare_commands(app) -> List:
      if not is_overridden("configure_commands", app.root):
          return []
  
      # 1: Upload the command to s3.
      commands = app.root.configure_commands()
      for command_mapping in commands:
          for command_name, command in command_mapping.items():
              if isinstance(command, ClientCommand):
                  _upload(command_name, "commands", command)
  
      # 2: Cache the commands on the app.
      app.commands = commands
      return commands
  
imports: import errno
  import inspect
  import os
  import os.path
  import shutil
  import sys
  import traceback
  from dataclasses import asdict
  from getpass import getuser
  from importlib.util import module_from_spec, spec_from_file_location
  from tempfile import gettempdir
  from typing import Any, Callable, Dict, List, Optional, Union
  import requests
  from fastapi import HTTPException
  from pydantic import BaseModel
  from lightning.app.api.http_methods import Post
  from lightning.app.api.request_types import _APIRequest, _CommandRequest, _RequestResponse
  from lightning.app.utilities import frontend
  from lightning.app.utilities.app_helpers import Logger, is_overridden
  from lightning.app.utilities.cloud import _get_project
  from lightning.app.utilities.network import LightningClient
  from lightning.app.utilities.state import AppState
label_desc: Use image node_id 6 for calling a global function with example usage: _prepare_commands(app) and returns: commands, list