def match_client_request(self, request):
        for _pref, _prov in PREFERENCE2PROVIDER.items():
            if _pref in request:
                if _pref == "response_types":
                    if not self.match_sp_sep(request[_pref],
                                             self.capabilities[_prov]):
                        raise CapabilitiesMisMatch(_pref)
                else:
                    if isinstance(request[_pref], six.string_types):
                        try:
                            assert request[_pref] in self.capabilities[_prov]
                        except __HOLE__:
                            raise CapabilitiesMisMatch(_pref)
                    else:
                        if not set(request[_pref]).issubset(
                                set(self.capabilities[_prov])):
                            raise CapabilitiesMisMatch(_pref)
dataset/ETHPy150Open rohe/pyoidc/src/oic/oic/provider.py/Provider.match_client_request