code: def run(args):
      remote = remote_support.remote_for_args(args)
      try:
          run_id = remote.run_op(**_run_kw(args))
      except remotelib.RunFailed as e:
          _handle_run_failed(e, remote)
      except remotelib.RemoteProcessError as e:
          _handle_remote_process_error(e)
      except remotelib.RemoteProcessDetached as e:
          run_id = e.args[0]
          cli.out(
              "\nDetached from remote run {run_id} (still running)\n"
              "To re-attach use 'guild watch {run_id} -r {remote}'".format(
                  run_id=run_id, remote=args.remote
              )
          )
      except remotelib.OperationError as e:
          _handle_op_error(e, remote)
      except remotelib.OperationNotSupported as e:
          _handle_not_supported(remote, e)
      else:
          if args.no_wait:
              cli.out(
                  "{run_id} is running on {remote}\n"
                  "To watch use 'guild watch {run_id} -r {remote}'".format(
                      run_id=run_id, remote=args.remote
                  )
              )
  
imports: import os
  import typing
  from guild import cli
  from guild import remote
  from .None import remote_support
label_desc: Use image node_id 8 for calling a global function with example usage: run(args) without return types