docs: def update(self, buf, encoding="utf-8"):
          """
           Feed the data contained in the given buffer to the state.
  
          :param String|Byte buf: The data to be hashed
          :param String encoding: Encoding is used if buf is String
          :raises TypeError: If buf is not Bytes, String or Unicode
  
          """
  
          if isinstance(buf, six.text_type):
              buf = buf.encode(encoding)
  
          if not isinstance(buf, six.binary_type):
              raise TypeError(
                  "Argument must be of string, unicode or bytes type not "
                  "'%r'" % type(buf)
              )
  
          self._data = self._data + buf