/app/.venv/lib/python3.14/site-packages/slices_clientlib_core/base/config.py:282: UserWarning: Problem reading config cache from /root/.slices/cache/cache_slices-central-config.json. Reverting to online version return load_default_central_api_clients_config(_no_auth_client_maker) ╭───────────────────────────────────────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────────────────────────────────────╮ │ /app/.venv/lib/python3.14/site-packages/slices_cli_bi/main.py:157 in initialize_api_clients │ │ │ │ 154 │ # This will automatically load the auth token from the cache, and refresh it if needed. │ │ 155 │ # This also automatically supports external auth token providers that use SLICES_AUTH_TOKEN_PROVIDER. │ │ 156 │ try: │ │ ❱ 157 │ │ auth_token, user_info = load_auth_token_and_user() │ │ 158 │ except CredentialsBrokenError as e: │ │ 159 │ │ err_console.print(f"[bold red]{e} :x:") │ │ 160 │ │ err_console.print("[red]Please log in again") │ │ │ │ /app/.venv/lib/python3.14/site-packages/slices_clientlib_core/base/auth.py:188 in load_auth_token_and_user │ │ │ │ 185 │ │ │ 186 │ try: │ │ 187 │ │ auth_token = load_auth_token() │ │ ❱ 188 │ │ user_info = parse_auth_token(auth_token) if auth_token else None │ │ 189 │ except (AuthlibBaseError, PyJWTError): │ │ 190 │ │ try: │ │ 191 │ │ │ delete_auth_token() │ │ │ │ /app/.venv/lib/python3.14/site-packages/slices_clientlib_core/base/auth.py:71 in parse_auth_token │ │ │ │ 68 def parse_auth_token(auth_token: OAuthToken) -> AuthJWT: │ │ 69 │ """Parse auth token into an AuthJWT object.""" │ │ 70 │ jwt_token = auth_token.access_token │ │ ❱ 71 │ signing_key = _get_jwks_client().get_signing_key_from_jwt(jwt_token) │ │ 72 │ │ │ 73 │ return jwt.decode( │ │ 74 │ │ jwt_token, │ │ │ │ /app/.venv/lib/python3.14/site-packages/jwt/jwks_client.py:226 in get_signing_key_from_jwt │ │ │ │ 223 │ │ """ │ │ 224 │ │ unverified = decode_token(token, options={"verify_signature": False}) │ │ 225 │ │ header = unverified["header"] │ │ ❱ 226 │ │ return self.get_signing_key(header.get("kid")) │ │ 227 │ │ │ 228 │ @staticmethod │ │ 229 │ def match_kid(signing_keys: list[PyJWK], kid: str) -> PyJWK | None: │ │ │ │ /app/.venv/lib/python3.14/site-packages/jwt/jwks_client.py:198 in get_signing_key │ │ │ │ 195 │ │ :raises PyJWKClientError: If no matching key is found after │ │ 196 │ │ │ refreshing. │ │ 197 │ │ """ │ │ ❱ 198 │ │ signing_keys = self.get_signing_keys() │ │ 199 │ │ signing_key = self.match_kid(signing_keys, kid) │ │ 200 │ │ │ │ 201 │ │ if not signing_key: │ │ │ │ /app/.venv/lib/python3.14/site-packages/jwt/jwks_client.py:173 in get_signing_keys │ │ │ │ 170 │ │ :rtype: list[PyJWK] │ │ 171 │ │ :raises PyJWKClientError: If no signing keys are found. │ │ 172 │ │ """ │ │ ❱ 173 │ │ jwk_set = self.get_jwk_set(refresh) │ │ 174 │ │ signing_keys = [ │ │ 175 │ │ │ jwk_set_key │ │ 176 │ │ │ for jwk_set_key in jwk_set.keys │ │ │ │ /app/.venv/lib/python3.14/site-packages/jwt/jwks_client.py:153 in get_jwk_set │ │ │ │ 150 │ │ │ data = self.jwk_set_cache.get() │ │ 151 │ │ │ │ 152 │ │ if data is None: │ │ ❱ 153 │ │ │ data = self.fetch_data() │ │ 154 │ │ │ │ 155 │ │ if not isinstance(data, dict): │ │ 156 │ │ │ raise PyJWKClientError("The JWKS endpoint did not return a JSON object") │ │ │ │ /app/.venv/lib/python3.14/site-packages/slices_clientlib_core/base/jwk_cache.py:49 in fetch_data │ │ │ │ 46 │ │ cache_entry = load_cache_entry("jwk", uri_b64, timedelta(hours=6)) │ │ 47 │ │ if cache_entry: │ │ 48 │ │ │ try: │ │ ❱ 49 │ │ │ │ return json.loads(cache_entry.content) │ │ 50 │ │ │ except json.JSONDecodeError: │ │ 51 │ │ │ │ clear_cache_entry("jwk", uri_b64) │ │ 52 │ │ │ │ raise │ │ │ │ /usr/local/lib/python3.14/json/__init__.py:352 in loads │ │ │ │ 349 │ if (cls is None and object_hook is None and │ │ 350 │ │ │ parse_int is None and parse_float is None and │ │ 351 │ │ │ parse_constant is None and object_pairs_hook is None and not kw): │ │ ❱ 352 │ │ return _default_decoder.decode(s) │ │ 353 │ if cls is None: │ │ 354 │ │ cls = JSONDecoder │ │ 355 │ if object_hook is not None: │ │ │ │ /usr/local/lib/python3.14/json/decoder.py:345 in decode │ │ │ │ 342 │ │ containing a JSON document). │ │ 343 │ │ │ │ 344 │ │ """ │ │ ❱ 345 │ │ obj, end = self.raw_decode(s, idx=_w(s, 0).end()) │ │ 346 │ │ end = _w(s, end).end() │ │ 347 │ │ if end != len(s): │ │ 348 │ │ │ raise JSONDecodeError("Extra data", s, end) │ │ │ │ /usr/local/lib/python3.14/json/decoder.py:363 in raw_decode │ │ │ │ 360 │ │ try: │ │ 361 │ │ │ obj, end = self.scan_once(s, idx) │ │ 362 │ │ except StopIteration as err: │ │ ❱ 363 │ │ │ raise JSONDecodeError("Expecting value", s, err.value) from None │ │ 364 │ │ return obj, end │ │ 365 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ JSONDecodeError: Expecting value: line 1 column 1 (char 0)