def dynamic(self, server_env, callback, logout_callback, session, key):
        try:
            client = server_env["OIC_CLIENT"][key]
        except __HOLE__:
            client = self.client_cls(client_authn_method=CLIENT_AUTHN_METHOD)
            client.redirect_uris = [callback]
            client.post_logout_redirect_uris = [logout_callback]

            _me = self.registration_info.copy()
            _me["redirect_uris"] = [callback]

            provider_conf = client.provider_config(self.srv_discovery_url)
            logger.debug("Got provider config: %s", provider_conf)
            session['provider'] = provider_conf["issuer"]
            logger.debug("Registering RP")
            reg_info = client.register(provider_conf["registration_endpoint"],
                                       **_me)
            logger.debug("Registration response: %s", reg_info)
            for prop in ["client_id", "client_secret"]:
                try:
                    setattr(client, prop, reg_info[prop])
                except KeyError:
                    pass
            try:
                server_env["OIC_CLIENT"][key] = client
            except KeyError:
                server_env["OIC_CLIENT"] = {key: client}
        return client
dataset/ETHPy150Open rohe/pyoidc/oidc_example/rp2/oidc.py/OpenIDConnect.dynamic