summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrique Joaquim <h.joaquim@campus.fct.unl.pt>2024-01-09 15:05:58 +0000
committerGitHub <noreply@github.com>2024-01-09 15:05:58 +0000
commitcf9536d8697bd778191aab07967864074acc8a2f (patch)
treed185c09a6f0108e2bac5a897cd243ec6a2ed54ac
parent16bd470a782449474e1aae31d6b4356e3b904ab5 (diff)
Add filtering to AV historical price (#5928)
* add filtering to av historical price * lints --------- Co-authored-by: Pratyush Shukla <ps4534@nyu.edu>
-rw-r--r--openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/models/equity_historical.py9
-rw-r--r--openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/utils/helpers.py18
2 files changed, 24 insertions, 3 deletions
diff --git a/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/models/equity_historical.py b/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/models/equity_historical.py
index ee3c7620e5d..83e124307a0 100644
--- a/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/models/equity_historical.py
+++ b/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/models/equity_historical.py
@@ -5,7 +5,12 @@ from datetime import datetime
from typing import Any, Dict, List, Literal, Optional
from dateutil.relativedelta import relativedelta
-from openbb_alpha_vantage.utils.helpers import extract_key_name, get_data, get_interval
+from openbb_alpha_vantage.utils.helpers import (
+ extract_key_name,
+ filter_by_dates,
+ get_data,
+ get_interval,
+)
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_historical import (
EquityHistoricalData,
@@ -171,6 +176,7 @@ class AVEquityHistoricalFetcher(
return data[dynamic_key]
+ # pylint: disable=unused-argument
@staticmethod
def transform_data(
query: AVEquityHistoricalQueryParams, data: Dict, **kwargs: Any
@@ -180,5 +186,6 @@ class AVEquityHistoricalFetcher(
{"date": date, **{extract_key_name(k): v for k, v in values.items()}}
for date, values in data.items()
]
+ data = filter_by_dates(data, query.start_date, query.end_date)
return [AVEquityHistoricalData.model_validate(d) for d in data]
diff --git a/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/utils/helpers.py b/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/utils/helpers.py
index 341a64a1b18..14c4ed70a9d 100644
--- a/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/utils/helpers.py
+++ b/openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/utils/helpers.py
@@ -2,8 +2,9 @@
import json
import re
+from datetime import datetime
from io import StringIO
-from typing import Any, List, Optional, TypeVar, Union
+from typing import Any, Dict, List, Optional, TypeVar, Union
import requests
from openbb_core.provider import helpers
@@ -149,7 +150,6 @@ def get_data_one(url: str, **kwargs: Any) -> dict:
def get_interval(value: str) -> str:
"""Get the intervals for the Alpha Vantage API."""
-
intervals = {
"m": "min",
"d": "day",
@@ -164,3 +164,17 @@ def extract_key_name(key):
"""Extract the alphabetical part of the key using regex."""
match = re.search(r"\d+\.\s+([a-z]+)", key, re.I)
return match.group(1) if match else key
+
+
+def filter_by_dates(
+ data: List[Dict[str, Any]], start_date: datetime, end_date: datetime
+) -> List[Dict[str, Any]]:
+ """Filter the data by start and end dates."""
+ return list(
+ filter(
+ lambda x: start_date
+ <= datetime.strptime(x["date"], "%Y-%m-%d").date()
+ <= end_date,
+ data,
+ )
+ )