1313from openbb_core .provider .utils .descriptions import QUERY_DESCRIPTIONS
1414from pydantic import Field , field_validator
1515
16+ import logging
17+ from openbb_akshare import project_name
18+ from mysharelib .tools import setup_logger
19+
20+ setup_logger (project_name )
21+ logger = logging .getLogger (__name__ )
22+
1623
1724class AKShareBalanceSheetQueryParams (BalanceSheetQueryParams ):
1825 """AKShare Balance Sheet Query.
@@ -93,13 +100,10 @@ def extract_data(
93100 ** kwargs : Any ,
94101 ) -> list [dict ]:
95102 """Extract the data from the AKShare endpoints."""
103+ api_key = credentials .get ("akshare_api_key" ) if credentials else ""
96104 # pylint: disable=import-outside-toplevel
97- em_df = get_data (query .symbol , query .period , query .use_cache )
98-
99- if query .limit is None :
100- return em_df .to_dict (orient = "records" )
101- else :
102- return em_df .head (query .limit ).to_dict (orient = "records" )
105+ em_df = get_data (query .symbol , query .period , query .use_cache , api_key = api_key , limit = query .limit )
106+ return em_df .head (query .limit ).to_dict (orient = "records" )
103107
104108 @staticmethod
105109 def transform_data (
@@ -110,21 +114,15 @@ def transform_data(
110114 """Transform the data."""
111115 return [AKShareBalanceSheetData .model_validate (d ) for d in data ]
112116
113- def get_data (symbol : str , period : str = "annual" , use_cache : bool = True ) -> pd .DataFrame :
117+ def get_data (symbol : str , period : Literal [ "annual" , "quarter" ] = "annual" , use_cache : bool = True , api_key : str = "" , limit : int = 5 ) -> pd .DataFrame :
114118 from openbb_akshare import project_name
115119 from mysharelib .blob_cache import BlobCache
116120 cache = BlobCache (table_name = "balance_sheet" , project = project_name )
117- return cache .load_cached_data (symbol , period , use_cache , get_ak_data )
118-
119- def get_ak_data (symbol : str , period : str = "annual" , api_key : Optional [str ] = "" ) -> pd .DataFrame :
120- import akshare as ak
121- from openbb_akshare .utils .helpers import normalize_symbol
122- symbol_b , symbol_f , market = normalize_symbol (symbol )
123- symbol_em = f"{ market } { symbol_b } "
124-
125- if period == "annual" :
126- return ak .stock_balance_sheet_by_yearly_em (symbol = symbol_em )
127- elif period == "quarter" :
128- return ak .stock_balance_sheet_by_report_em (symbol = symbol_em )
129- else :
130- raise ValueError ("Invalid period. Please use 'annual' or 'quarter'." )
121+ logger .info (f"Fetching balance sheet data for { symbol } with limit { limit } and use_cache={ use_cache } " )
122+ return cache .load_cached_data (symbol , period , use_cache , get_ak_data , api_key , limit )
123+
124+ def get_ak_data (symbol : str , period : Literal ["annual" , "quarter" ] = "annual" , api_key : Optional [str ] = "" , limit :int = 5 ) -> pd .DataFrame :
125+ from openbb_akshare .utils .ak_balance_sheet import ak_stock_balance_sheet
126+
127+ logger .info (f"Getting balance sheet data for { symbol } with limit { limit } " )
128+ return ak_stock_balance_sheet (symbol , limit , period )
0 commit comments