@@ -168,17 +168,53 @@ def get_exchanges(self) -> pd.DataFrame:
168168
169169 return self ._rest_get ("exchanges-list" )
170170
171- def get_exchange_symbols (self , uri : str = "" , delisted = False ) -> pd .DataFrame :
172- """Get supported exchange symbols"""
171+ def get_exchange_symbols (
172+ self ,
173+ uri : str = "" ,
174+ delisted : bool = False ,
175+ include_delisted : bool = False ,
176+ ) -> pd .DataFrame :
177+ """Get supported exchange symbols.
178+
179+ Parameters
180+ ----------
181+ uri : str
182+ Exchange code, e.g. "US".
183+ delisted : bool, optional
184+ If True, return delisted symbols only. Ignored if include_delisted=True.
185+ include_delisted : bool, optional
186+ If True, return both listed and delisted symbols in one DataFrame.
173187
188+ Returns
189+ -------
190+ pd.DataFrame
191+ """
174192 try :
175- if uri .strip () == "" :
193+ if uri is None or str ( uri ) .strip () == "" :
176194 raise ValueError ("endpoint uri is empty!" )
177195
178- if delisted :
179- return self ._rest_get ("exchange-symbol-list" , uri , "&delisted=1" )
196+ # allow 0/1 and True/False
197+ delisted = bool (delisted )
198+ include_delisted = bool (include_delisted )
199+
200+ if not include_delisted :
201+ if delisted :
202+ return self ._rest_get ("exchange-symbol-list" , uri , "&delisted=1" )
203+ return self ._rest_get ("exchange-symbol-list" , uri )
204+
205+ # include_delisted=True -> merge both
206+ listed_df = self ._rest_get ("exchange-symbol-list" , uri )
207+ delisted_df = self ._rest_get ("exchange-symbol-list" , uri , "&delisted=1" )
208+
209+ # If either is empty, return the other
210+ if listed_df is None or len (listed_df ) == 0 :
211+ return delisted_df if delisted_df is not None else pd .DataFrame ()
212+ if delisted_df is None or len (delisted_df ) == 0 :
213+ return listed_df
214+
215+ # Concatenate safely
216+ return pd .concat ([listed_df , delisted_df ], ignore_index = True )
180217
181- return self ._rest_get ("exchange-symbol-list" , uri )
182218 except ValueError as err :
183219 self .console .log (err )
184220 return pd .DataFrame ()
0 commit comments