docs: def encode_utf8(s, f):
      """UTF-8 encodes string `s` to file-like object `f` according to
      the MQTT Version 3.1.1 specification in section 1.5.3.
  
      The maximum length for the encoded string is 2**16-1 (65535) bytes.
      An assertion error will result if the encoded string is longer.
  
      Parameters
      ----------
      s: str
          String to be encoded.
      f: file
          File-like object.
  
      Returns
      -------
      int
          Number of bytes written to f.
      """
      encode = codecs.getencoder('utf8')
  
      encoded_str_bytes, num_encoded_chars = encode(s)
      num_encoded_str_bytes = len(encoded_str_bytes)
      assert 0 <= num_encoded_str_bytes <= 2**16-1
      num_encoded_bytes = num_encoded_str_bytes + 2
  
      f.write(FIELD_U8.pack((num_encoded_str_bytes & 0xff00) >> 8))
      f.write(FIELD_U8.pack(num_encoded_str_bytes & 0x00ff))
      f.write(encoded_str_bytes)
  
      return num_encoded_bytes