mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-12 20:31:18 +00:00
Ecocal improve (#2225)
* fix available countries and title * fix title * capitalize headers * display just one day by default * default all countries & high imporatnce * format output * fix display to standard date yyyy/mm/dd * rewrite expected ecocal test * change date format slash to dash * mypy * complete description Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com> Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com>
This commit is contained in:
@@ -182,16 +182,18 @@ class EconomyController(BaseController):
|
||||
c: None for c in econdb_model.COUNTRY_CODES
|
||||
}
|
||||
|
||||
self.choices["ycrv"]["-c"] = {c: None for c in investingcom_model.COUNTRIES}
|
||||
self.choices["ycrv"]["-c"] = {
|
||||
c: None for c in investingcom_model.BOND_COUNTRIES
|
||||
}
|
||||
self.choices["ycrv"]["--countries"] = {
|
||||
c: None for c in investingcom_model.COUNTRIES
|
||||
c: None for c in investingcom_model.BOND_COUNTRIES
|
||||
}
|
||||
|
||||
self.choices["ecocal"]["-c"] = {
|
||||
c: None for c in investingcom_model.COUNTRIES
|
||||
c: None for c in investingcom_model.CALENDAR_COUNTRIES
|
||||
}
|
||||
self.choices["ecocal"]["--countries"] = {
|
||||
c: None for c in investingcom_model.COUNTRIES
|
||||
c: None for c in investingcom_model.CALENDAR_COUNTRIES
|
||||
}
|
||||
|
||||
self.choices["ecocal"]["-i"] = {
|
||||
@@ -1021,7 +1023,9 @@ class EconomyController(BaseController):
|
||||
|
||||
elif ns_parser.source == "investpy":
|
||||
|
||||
investingcom_model.check_correct_country(ns_parser.country)
|
||||
investingcom_model.check_correct_country(
|
||||
ns_parser.country, investingcom_model.BOND_COUNTRIES
|
||||
)
|
||||
|
||||
investingcom_view.display_yieldcurve(
|
||||
country=ns_parser.country,
|
||||
@@ -1036,7 +1040,7 @@ class EconomyController(BaseController):
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="ecocal",
|
||||
description="Economic calendar.",
|
||||
description="Economic calendar. If no start or end dates, default is the current day.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-c",
|
||||
@@ -1044,7 +1048,7 @@ class EconomyController(BaseController):
|
||||
action="store",
|
||||
dest="country",
|
||||
nargs="+",
|
||||
default="united states",
|
||||
default="all",
|
||||
help="Display calendar for specific country.",
|
||||
)
|
||||
parser.add_argument(
|
||||
@@ -1053,7 +1057,6 @@ class EconomyController(BaseController):
|
||||
action="store",
|
||||
dest="importances",
|
||||
choices=investingcom_model.IMPORTANCES,
|
||||
default="all",
|
||||
help="Event importance classified as high, medium, low or all.",
|
||||
)
|
||||
parser.add_argument(
|
||||
@@ -1089,7 +1092,7 @@ class EconomyController(BaseController):
|
||||
other_args,
|
||||
export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED,
|
||||
raw=True,
|
||||
limit=10,
|
||||
limit=100,
|
||||
)
|
||||
|
||||
if ns_parser:
|
||||
@@ -1100,7 +1103,9 @@ class EconomyController(BaseController):
|
||||
if isinstance(ns_parser.categories, list):
|
||||
ns_parser.categories = " ".join(ns_parser.categories)
|
||||
|
||||
investingcom_model.check_correct_country(ns_parser.country)
|
||||
investingcom_model.check_correct_country(
|
||||
ns_parser.country, investingcom_model.CALENDAR_COUNTRIES
|
||||
)
|
||||
|
||||
investingcom_view.display_economic_calendar(
|
||||
countries=ns_parser.country,
|
||||
|
||||
@@ -17,7 +17,8 @@ from openbb_terminal import helper_funcs
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
COUNTRIES = investpy.bonds.get_bond_countries()
|
||||
BOND_COUNTRIES = investpy.bonds.get_bond_countries()
|
||||
CALENDAR_COUNTRIES = list(investpy.utils.constant.COUNTRY_ID_FILTERS.keys()) + ["all"]
|
||||
CATEGORIES = [
|
||||
"employment",
|
||||
"credit",
|
||||
@@ -31,13 +32,13 @@ CATEGORIES = [
|
||||
IMPORTANCES = ["high", "medium", "low", "all"]
|
||||
|
||||
|
||||
def check_correct_country(country):
|
||||
def check_correct_country(country, countries):
|
||||
"""Argparse type to check that correct country is inserted"""
|
||||
if country.lower() not in investpy.bonds.get_bond_countries():
|
||||
if country.lower() not in countries:
|
||||
log_and_raise(
|
||||
argparse.ArgumentTypeError(
|
||||
f"{country} is an invalid country. Choose from \
|
||||
{', '.join(investpy.bonds.get_bond_countries())}"
|
||||
{', '.join(countries)}"
|
||||
)
|
||||
)
|
||||
return country
|
||||
@@ -114,6 +115,13 @@ def get_economic_calendar(
|
||||
|
||||
return day + "/" + month + "/" + year
|
||||
|
||||
# Joint default for countries and importances
|
||||
if countries == ["all"] and importances == []:
|
||||
countries = CALENDAR_COUNTRIES[:-1]
|
||||
importances = ["high"]
|
||||
elif importances is None:
|
||||
importances = ["all"]
|
||||
|
||||
if from_date and not to_date:
|
||||
to_date_string = format_date(from_date + datetime.timedelta(days=7))
|
||||
from_date_string = format_date(from_date)
|
||||
@@ -124,9 +132,8 @@ def get_economic_calendar(
|
||||
from_date_string = format_date(from_date)
|
||||
to_date_string = format_date(to_date)
|
||||
else:
|
||||
today = datetime.date.today()
|
||||
from_date_string = format_date(today)
|
||||
to_date_string = format_date(today + datetime.timedelta(days=7))
|
||||
from_date_string = None
|
||||
to_date_string = None
|
||||
|
||||
# Get user time zone in GMT offset format
|
||||
user_time_zone = pytz.timezone(helper_funcs.get_user_timezone())
|
||||
@@ -163,8 +170,11 @@ def get_economic_calendar(
|
||||
|
||||
if not data.empty:
|
||||
data.drop(columns=data.columns[0], axis=1, inplace=True)
|
||||
data.sort_values(by="date", inplace=True)
|
||||
data.drop_duplicates(keep="first", inplace=True)
|
||||
data["date"] = data["date"].apply(
|
||||
lambda date: date[-4:] + "-" + date[3:5] + "-" + date[:2]
|
||||
)
|
||||
data.sort_values(by=data.columns[0], inplace=True)
|
||||
|
||||
if importances:
|
||||
if importances == ["all"]:
|
||||
|
||||
@@ -172,12 +172,21 @@ def display_economic_calendar(
|
||||
console.print("[red]No data.[/red]\n")
|
||||
else:
|
||||
df.fillna(value="", inplace=True)
|
||||
df.columns = df.columns.str.title()
|
||||
if df["Zone"].eq(df["Zone"].iloc[0]).all():
|
||||
del df["Zone"]
|
||||
title = f"{countries.title()} economic calendar ({time_zone})"
|
||||
else:
|
||||
title = f"Economic Calendar ({time_zone})"
|
||||
df["Zone"] = df["Zone"].str.title()
|
||||
|
||||
df["Importance"] = df["Importance"].str.title()
|
||||
|
||||
print_rich_table(
|
||||
df[:limit],
|
||||
headers=list(df.columns),
|
||||
show_index=False,
|
||||
title=f"Economic Calendar ({time_zone})",
|
||||
title=title,
|
||||
)
|
||||
|
||||
export_data(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
date time zone currency importance event actual forecast previous
|
||||
0 08/07/2022 08:30 united states USD high Nonfarm Payrolls (Jun) 372K 268K 384K
|
||||
1 08/07/2022 08:30 united states USD high Unemployment Rate (Jun) 3.6% 3.6% 3.6%
|
||||
2 14/07/2022 08:30 united states USD high Initial Jobless Claims 240K 235K
|
||||
Date Time Currency Importance Event Actual Forecast Previous
|
||||
0 2022-07-08 08:30 USD High Nonfarm Payrolls (Jun) 372K 268K 384K
|
||||
1 2022-07-08 08:30 USD High Unemployment Rate (Jun) 3.6% 3.6% 3.6%
|
||||
2 2022-07-14 08:30 USD High Initial Jobless Claims 240K 235K
|
||||
|
||||
Reference in New Issue
Block a user