docs: def sendall(self, data, flags=0):
          """send data over the connection, and keep sending until it all goes
  
          .. note:: this method may block if the socket's send buffer is full
  
          :param data: the data to send
          :type data: str
          :param flags:
              flags for the send call. this has the same meaning as for
              :meth:`recv`
          :type flags: int
          """
          sent = self.send(data, flags)
          while sent < len(data):
              sent += self.send(data[sent:], flags)