Skip to content

Commit ec660c5

Browse files
committed
Add parameter to get both listed and delisted tickers in one list
1 parent f6e646a commit ec660c5

1 file changed

Lines changed: 42 additions & 6 deletions

File tree

eodhd/apiclient.py

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)