docs: def send_arrays(socket, arrays, stop=False):
      """Send NumPy arrays using the buffer interface and some metadata.
  
      Parameters
      ----------
      socket : :class:`zmq.Socket`
          The socket to send data over.
      arrays : list
          A list of :class:`numpy.ndarray` to transfer.
      stop : bool, optional
          Instead of sending a series of NumPy arrays, send a JSON object
          with a single `stop` key. The :func:`recv_arrays` will raise
          ``StopIteration`` when it receives this.
  
      Notes
      -----
      The protocol is very simple: A single JSON object describing the array
      format (using the same specification as ``.npy`` files) is sent first.
      Subsequently the arrays are sent as bytestreams (through NumPy's
      support of the buffering protocol).
  
      """
      if arrays:
          # The buffer protocol only works on contiguous arrays
          arrays = [numpy.ascontiguousarray(array) for array in arrays]
      if stop:
          headers = {'stop': True}
          socket.send_json(headers)
      else:
          headers = [header_data_from_array_1_0(array) for array in arrays]
          socket.send_json(headers, zmq.SNDMORE)
          for array in arrays[:-1]:
              socket.send(array, zmq.SNDMORE)
          socket.send(arrays[-1])