code: def send(
      self,
      *,
      inform_init: Optional[spb.ServerInformInitRequest] = None,
      inform_start: Optional[spb.ServerInformStartRequest] = None,
      inform_attach: Optional[spb.ServerInformAttachRequest] = None,
      inform_finish: Optional[spb.ServerInformFinishRequest] = None,
      inform_teardown: Optional[spb.ServerInformTeardownRequest] = None,
  ) -> None:
      server_req = spb.ServerRequest()
      if inform_init:
          server_req.inform_init.CopyFrom(inform_init)
      elif inform_start:
          server_req.inform_start.CopyFrom(inform_start)
      elif inform_attach:
          server_req.inform_attach.CopyFrom(inform_attach)
      elif inform_finish:
          server_req.inform_finish.CopyFrom(inform_finish)
      elif inform_teardown:
          server_req.inform_teardown.CopyFrom(inform_teardown)
      else:
          raise Exception("unmatched")
      self.send_server_request(server_req)
  
imports: import socket
  import struct
  import threading
  import time
  import uuid
  from typing import TYPE_CHECKING, Any, List, Optional
  from wandb.proto import wandb_server_pb2
  from .None import tracelog
label_desc: Use image node_id 12 for calling the SockClient obj's underlying member method code with example usage: obj.send() without return types