def auth_resp_extension(self, aresp, areq, sid, rtype):
        if "id_token" in areq["response_type"]:
            _sinfo = self.sdb[sid]

            if "code" in areq["response_type"]:
                _code = aresp["code"] = _sinfo["code"]
                rtype.remove("code")
            else:
                _sinfo[sid]["code"] = None
                _code = None

            try:
                _access_token = aresp["access_token"]
            except __HOLE__:
                _access_token = None

            user_info = self.userinfo_in_id_token_claims(_sinfo)
            client_info = self.cdb[str(areq["client_id"])]

            hargs = {}
            if set(areq["response_type"]) == {'code', 'id_token', 'token'}:
                hargs = {"code": _code, "access_token": _access_token}
            elif set(areq["response_type"]) == {'code', 'id_token'}:
                hargs = {"code": _code}
            elif set(areq["response_type"]) == {'id_token', 'token'}:
                hargs = {"access_token": _access_token}

            # or 'code id_token'
            id_token = self.sign_encrypt_id_token(
                _sinfo, client_info, areq, user_info=user_info, **hargs)

            aresp["id_token"] = id_token
            _sinfo["id_token"] = id_token
            rtype.remove("id_token")

        return aresp
dataset/ETHPy150Open rohe/pyoidc/src/oic/oic/provider.py/Provider.auth_resp_extension