code: def _raise_bad_scheme(cls, scheme, valid, msg):
          
          valid_schemes = [s.decode() for s in valid]
          valid_schemes.sort()
          raise cls.BadScheme(msg % (scheme, u", ".join(valid_schemes)))
docs: Raise :attr:`BadScheme` error for ``scheme``, possible valid scheme are
              in ``valid``, the error message is ``msg``
  
              :param bytes scheme: A bad scheme
              :param list valid: A list a valid scheme
              :param str msg: The error template message
              :raises LdapHashUserPassword.BadScheme: always