summaryrefslogtreecommitdiffstats
path: root/openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py
diff options
context:
space:
mode:
Diffstat (limited to 'openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py')
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py b/openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py
index 58579cacaf9..beb23b80785 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/equity_screener.py
@@ -1,5 +1,7 @@
"""FMP Equity Screener Model."""
+# pylint: disable=unused-argument
+from copy import deepcopy
from typing import Any, Dict, List, Literal, Optional
import pandas as pd
@@ -8,6 +10,7 @@ from openbb_core.provider.standard_models.equity_screener import (
EquityScreenerData,
EquityScreenerQueryParams,
)
+from openbb_core.provider.utils.errors import EmptyDataError
from openbb_fmp.utils.definitions import EXCHANGES, SECTORS
from openbb_fmp.utils.helpers import create_url, get_data
from pydantic import Field
@@ -162,23 +165,26 @@ class FMPEquityScreenerFetcher(
) -> List[Dict]:
"""Return the raw data from the FMP endpoint."""
api_key = credentials.get("fmp_api_key") if credentials else ""
+ _query = deepcopy(query)
+ if _query.sector is not None:
+ _query.sector = _query.sector.replace("_", " ").title()
url = create_url(
version=3,
endpoint="stock-screener",
api_key=api_key,
- query=query,
+ query=_query,
exclude=["query", "is_symbol", "industry"],
).replace(" ", "%20")
- return await get_data(url, **kwargs)
+ return await get_data(url, **kwargs) # type: ignore
@staticmethod
def transform_data(
query: FMPEquityScreenerQueryParams, data: List[Dict], **kwargs: Any
) -> List[FMPEquityScreenerData]:
"""Return the transformed data."""
+ if not data:
+ raise EmptyDataError("The request was returned empty.")
results = pd.DataFrame(data)
- if len(results) == 0:
- return []
if query.industry:
results = results[
results["sector"].str.contains(query.industry, case=False)