code: def validate(self):
          
  
          if not isinstance(self.vendor, text_type):
              if PY3:
                  raise ValueError("vendor needs to be str")
  
              try:
                  self.vendor.decode('utf-8')
              except UnicodeDecodeError:
                  raise ValueError
  
          for key, value in self:
              try:
                  if not is_valid_key(key):
                      raise ValueError("%r is not a valid key" % key)
              except TypeError:
                  raise ValueError("%r is not a valid key" % key)
  
              if not isinstance(value, text_type):
                  if PY3:
                      err = "%r needs to be str for key %r" % (value, key)
                      raise ValueError(err)
  
                  try:
                      value.decode("utf-8")
                  except Exception:
                      err = "%r is not a valid value for key %r" % (value, key)
                      raise ValueError(err)
  
          return True
docs: Validate keys and values.
  
          Check to make sure every key used is a valid Vorbis key, and
          that every value used is a valid Unicode or UTF-8 string. If
          any invalid keys or values are found, a ValueError is raised.
  
          In Python 3 all keys and values have to be a string.