From f719bfa92d1f29ef6870ac7c58bd25c2ff910aa6 Mon Sep 17 00:00:00 2001 From: Theodore Aptekarev Date: Fri, 1 Sep 2023 16:44:17 +0200 Subject: [PATCH] Handle fred's error when API key is wrong --- .../fred/openbb_fred/utils/fred_base.py | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/openbb_sdk/providers/fred/openbb_fred/utils/fred_base.py b/openbb_sdk/providers/fred/openbb_fred/utils/fred_base.py index 08d4bb0868b..a213598515f 100644 --- a/openbb_sdk/providers/fred/openbb_fred/utils/fred_base.py +++ b/openbb_sdk/providers/fred/openbb_fred/utils/fred_base.py @@ -1,3 +1,4 @@ +"""Base class for Fred API.""" from datetime import date from typing import Any, Optional from urllib.parse import urlencode @@ -8,7 +9,16 @@ ROOT_URL = "https://api.stlouisfed.org/fred" class Fred: + """Base class for Fred API.""" + def __init__(self, api_key: Optional[str]): + """Initialize Fred class. + + Parameters + ---------- + api_key : str + API key for FRED + """ self.api_key = api_key def __fetch_data(self, url: str, **kwargs: Any): @@ -23,8 +33,9 @@ class Fred: end_date: Optional[date] = None, **kwargs, ) -> dict: - """ - Get data for a Fred series id. This fetches the latest known data. + """Get data for a Fred series id. + + This fetches the latest known data. Code copied from: https://github.com/mortada/fredapi/blob/master/fredapi/fred.py Parameters @@ -57,4 +68,10 @@ class Fred: root = self.__fetch_data(url, **kwargs) if root is None: raise ValueError("No data exists for series id: " + series_id) + if ( + "error_code" in root + and "error_message" in root + and root["error_message"] != "" + ): + raise ValueError(root["error_message"]) return root["observations"]