diff options
author | Henrique Joaquim <h.joaquim@campus.fct.unl.pt> | 2024-01-09 15:05:58 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-09 15:05:58 +0000 |
commit | cf9536d8697bd778191aab07967864074acc8a2f (patch) | |
tree | d185c09a6f0108e2bac5a897cd243ec6a2ed54ac | |
parent | 16bd470a782449474e1aae31d6b4356e3b904ab5 (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.py | 9 | ||||
-rw-r--r-- | openbb_platform/providers/alpha_vantage/openbb_alpha_vantage/utils/helpers.py | 18 |
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, + ) + ) |