summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPedro Chaves <106980009+pmpmchaves@users.noreply.github.com>2022-11-29 04:15:49 +1100
committerGitHub <noreply@github.com>2022-11-28 12:15:49 -0500
commitd2622528e596430358ec55b61c5e003d1416e49f (patch)
tree2112bfda7241b13b5929640d17c06893518ea1d1
parent6381b2ae7def272da3df3b544ba91c6bf5362ad1 (diff)
Fixed dates on yield curve functions, test functions and doc strings (#3617)
* Fixed dates on yield curve functions, and doc strings * black * black * unused import * keeping the valid_date verification Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
-rw-r--r--openbb_terminal/economy/economy_controller.py4
-rw-r--r--openbb_terminal/economy/fred_model.py18
-rw-r--r--openbb_terminal/economy/fred_view.py23
-rw-r--r--tests/openbb_terminal/economy/test_fred_model.py9
4 files changed, 26 insertions, 28 deletions
diff --git a/openbb_terminal/economy/economy_controller.py b/openbb_terminal/economy/economy_controller.py
index aed486baece..152a705de89 100644
--- a/openbb_terminal/economy/economy_controller.py
+++ b/openbb_terminal/economy/economy_controller.py
@@ -1034,7 +1034,9 @@ class EconomyController(BaseController):
if country == "united states":
fred_view.display_yield_curve(
- ns_parser.date,
+ date=ns_parser.date.strftime("%Y-%m-%d")
+ if ns_parser.date
+ else None,
raw=ns_parser.raw,
export=ns_parser.export,
)
diff --git a/openbb_terminal/economy/fred_model.py b/openbb_terminal/economy/fred_model.py
index 0f2b44bbe53..3f8dc3fba90 100644
--- a/openbb_terminal/economy/fred_model.py
+++ b/openbb_terminal/economy/fred_model.py
@@ -256,18 +256,18 @@ def get_aggregated_series_data(
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def get_yield_curve(
- date: datetime = None,
-) -> Tuple[pd.DataFrame, datetime]:
+ date: str = None,
+) -> Tuple[pd.DataFrame, str]:
"""Gets yield curve data from FRED
Parameters
----------
- date: datetime
- Date to get curve for. If None, gets most recent date
+ date: str
+ Date to get curve for. If None, gets most recent date (format yyyy-mm-dd)
Returns
-------
- Tuple[pd.DataFrame, datetime]
+ Tuple[pd.DataFrame, str]
Dataframe of yields and maturities,
Date for which the yield curve is obtained
@@ -300,17 +300,13 @@ def get_yield_curve(
df = pd.DataFrame()
if date is None:
- date_to_get = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")
- else:
- date_to_get = date.strftime("%Y-%m-%d")
+ date = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")
for key, s_id in fred_series.items():
df = pd.concat(
[
df,
- pd.DataFrame(
- fredapi_client.get_series(s_id, date_to_get), columns=[key]
- ),
+ pd.DataFrame(fredapi_client.get_series(s_id, date), columns=[key]),
],
axis=1,
)
diff --git a/openbb_terminal/economy/fred_view.py b/openbb_terminal/economy/fred_view.py
index c362d726eec..033a74b5bee 100644
--- a/openbb_terminal/economy/fred_view.py
+++ b/openbb_terminal/economy/fred_view.py
@@ -5,7 +5,6 @@ import logging
import os
import textwrap
from typing import Optional, List, Tuple
-from datetime import datetime
import matplotlib.pyplot as plt
import numpy as np
@@ -186,7 +185,7 @@ def format_data_to_plot(data: pd.DataFrame, detail: dict) -> Tuple[pd.DataFrame,
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def display_yield_curve(
- date: datetime = None,
+ date: str = None,
external_axes: Optional[List[plt.Axes]] = None,
raw: bool = False,
export: str = "",
@@ -195,16 +194,18 @@ def display_yield_curve(
Parameters
----------
- date: datetime
- Date to get yield curve for
- external_axes: Optional[List[plt.Axes]]
- External axes to plot data on
+ date: str
+ Date to get curve for. If None, gets most recent date (format yyyy-mm-dd)
+ external_axes : Optional[List[plt.Axes]], optional
+ External axes (1 axis is expected in the list), by default None
+ raw : bool
+ Output only raw data
+ export : str
+ Export data to csv,json,xlsx or png,jpg,pdf,svg file
"""
rates, date_of_yield = fred_model.get_yield_curve(date)
if rates.empty:
- console.print(
- f"[red]Yield data not found for {date_of_yield.strftime('%Y-%m-%d')}.[/red]\n"
- )
+ console.print(f"[red]Yield data not found for {date_of_yield}.[/red]\n")
return
if external_axes is None:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
@@ -218,7 +219,7 @@ def display_yield_curve(
ax.set_ylabel("Rate (%)")
theme.style_primary_axis(ax)
if external_axes is None:
- ax.set_title(f"US Yield Curve for {date_of_yield.strftime('%Y-%m-%d')} ")
+ ax.set_title(f"US Yield Curve for {date_of_yield} ")
theme.visualize_output()
if raw:
@@ -226,7 +227,7 @@ def display_yield_curve(
rates,
headers=list(rates.columns),
show_index=False,
- title=f"United States Yield Curve for {date_of_yield.strftime('%Y-%m-%d')}",
+ title=f"United States Yield Curve for {date_of_yield}",
floatfmt=".3f",
)
diff --git a/tests/openbb_terminal/economy/test_fred_model.py b/tests/openbb_terminal/economy/test_fred_model.py
index c78126dce0f..cf585db7ca5 100644
--- a/tests/openbb_terminal/economy/test_fred_model.py
+++ b/tests/openbb_terminal/economy/test_fred_model.py
@@ -1,5 +1,4 @@
# IMPORTATION STANDARD
-import datetime
# IMPORTATION THIRDPARTY
import pytest
@@ -84,20 +83,20 @@ def test_load_data(func, kwargs_dict, recorder):
@pytest.mark.skip(reason="Date needs to be mocked.")
@pytest.mark.vcr
-@pytest.mark.parametrize("date", [datetime.datetime(2022, 3, 21, 0, 0)])
+@pytest.mark.parametrize("date", ["2022-03-21"])
def test_yield_curve(date, recorder):
result_df, returned_date = fred_model.get_yield_curve(date)
- assert date.strftime("%Y-%m-%d") == returned_date.strftime("%Y-%m-%d")
+ assert date == returned_date
assert not result_df.empty
recorder.capture(result_df)
@pytest.mark.skip(reason="Date needs to be mocked.")
@pytest.mark.vcr
-@pytest.mark.parametrize("date", [datetime.datetime(2021, 7, 17, 0, 0)])
+@pytest.mark.parametrize("date", ["2021-07-17"])
def test_yield_curve_weekend(date):
result_df, returned_date = fred_model.get_yield_curve(date)
- assert date.strftime("%Y-%m-%d") == returned_date
+ assert date == returned_date
assert result_df.empty