code: def write(self, endpoint, data, timeout = None):
          r
          backend = self._ctx.backend
  
          fn_map = {
                      util.ENDPOINT_TYPE_BULK:backend.bulk_write,
                      util.ENDPOINT_TYPE_INTR:backend.intr_write,
                      util.ENDPOINT_TYPE_ISO:backend.iso_write
                  }
  
          intf, ep = self._ctx.setup_request(self, endpoint)
          fn = fn_map[util.endpoint_type(ep.bmAttributes)]
  
          return fn(
                  self._ctx.handle,
                  ep.bEndpointAddress,
                  intf.bInterfaceNumber,
                  _interop.as_array(data),
                  self.__get_timeout(timeout)
              )
docs: r"""Write data to the endpoint.
  
          This method is used to send data to the device. The endpoint parameter
          corresponds to the bEndpointAddress member whose endpoint you want to
          communicate with.
  
          The data parameter should be a sequence like type convertible to
          the array type (see array module).
  
          The timeout is specified in miliseconds.
  
          The method returns the number of bytes written.