def create_client(self, **kwargs):
        """
        Do an instantiation of a client instance

        :param: Keyword arguments
            Keys are:
                srv_discovery_url
                client_info
                client_registration
                provider_info
                behaviour
        :return: client instance
        """

        _key_set = set(list(kwargs.keys()))
        try:
            _verify_ssl = kwargs['verify_ssl']
        except __HOLE__:
            _verify_ssl = self.verify_ssl
        else:
            _key_set.discard('verify_ssl')

        _client = self.client_cls(client_authn_method=CLIENT_AUTHN_METHOD,
                                  behaviour=kwargs["behaviour"],
                                  verify_ssl=_verify_ssl)

        # The behaviour parameter is not significant for the election process
        _key_set.discard("behaviour")

        for param in ["allow"]:
            try:
                setattr(_client, param, kwargs[param])
            except KeyError:
                pass
            else:
                _key_set.discard(param)

        if _key_set == {"client_info", "srv_discovery_url"}:
            # Ship the webfinger part
            # Gather OP information
            _client.provider_config(kwargs["srv_discovery_url"])
            # register the client
            _client.register(_client.provider_info["registration_endpoint"],
                             **kwargs["client_info"])
            self.get_path(kwargs['client_info']['redirect_uris'],
                          kwargs["srv_discovery_url"])
        elif _key_set == {"provider_info", "client_info"}:
            _client.handle_provider_config(
                ProviderConfigurationResponse(**kwargs["provider_info"]),
                kwargs["provider_info"]["issuer"])
            _client.register(_client.provider_info["registration_endpoint"],
                             **kwargs["client_info"])

            self.get_path(kwargs['client_info']['redirect_uris'],
                          kwargs["provider_info"]["issuer"])
        elif _key_set == {"provider_info", "client_registration"}:
            _client.handle_provider_config(
                ProviderConfigurationResponse(**kwargs["provider_info"]),
                kwargs["provider_info"]["issuer"])
            _client.store_registration_info(ClientInfoResponse(
                **kwargs["client_registration"]))
            self.get_path(kwargs['client_info']['redirect_uris'],
                          kwargs["provider_info"]["issuer"])
        elif _key_set == {"srv_discovery_url", "client_registration"}:
            _client.provider_config(kwargs["srv_discovery_url"])
            _client.store_registration_info(ClientInfoResponse(
                **kwargs["client_registration"]))
            self.get_path(kwargs['client_registration']['redirect_uris'],
                          kwargs["srv_discovery_url"])
        else:
            raise Exception("Configuration error ?")

        return client
dataset/ETHPy150Open rohe/pyoidc/src/oic/utils/rp/oauth2.py/OAuthClients.create_client