diff --git a/openbb_terminal/economy/economy_controller.py b/openbb_terminal/economy/economy_controller.py index 5b4c141abdf..d7454d171ab 100644 --- a/openbb_terminal/economy/economy_controller.py +++ b/openbb_terminal/economy/economy_controller.py @@ -30,7 +30,6 @@ from openbb_terminal.economy import ( fred_model, yfinance_model, yfinance_view, - investingcom_model, plot_view, commodity_view, ) @@ -196,6 +195,10 @@ class EconomyController(BaseController): c: {} for c in nasdaq_model.get_country_codes()["Code"].values } choices["bigmac"]["-c"] = "--countries" + choices["events"]["--countries"] = { + c: {} for c in nasdaq_model.get_country_names() + } + choices["events"]["-c"] = "--countries" self.choices = choices self.completer = NestedCompleter.from_nested_dict(choices) @@ -1053,16 +1056,21 @@ class EconomyController(BaseController): ) parser.add_argument( "-c", - "--country", + "--countries", action="store", - dest="country", - choices=[ - x.replace(" ", "_") for x in investingcom_model.CALENDAR_COUNTRIES - ], + dest="countries", type=str, default="", help="Display calendar for specific country.", ) + parser.add_argument( + "-n", + "--names", + help="Flag to show all available country names", + dest="names", + action="store_true", + default=False, + ) parser.add_argument( "-s", "--start", @@ -1087,22 +1095,6 @@ class EconomyController(BaseController): help="Get a specific date for events. Overrides start and end dates.", default=None, ) - parser.add_argument( - "-i", - "--importance", - action="store", - dest="importance", - choices=investingcom_model.IMPORTANCES, - help="Event importance classified as high, medium, low or all.", - ) - parser.add_argument( - "--categories", - action="store", - dest="category", - choices=investingcom_model.CATEGORIES, - default=None, - help="[INVESTING source only] Event category.", - ) ns_parser = self.parse_known_args_and_warn( parser, other_args, @@ -1113,6 +1105,11 @@ class EconomyController(BaseController): if ns_parser: + if ns_parser.names: + for name in nasdaq_model.get_country_names(): + console.print(name) + return + if ns_parser.start_date: start_date = ns_parser.start_date.strftime("%Y-%m-%d") else: @@ -1125,20 +1122,17 @@ class EconomyController(BaseController): # TODO: Add `Investing` to sources again when `investpy` is fixed - countries = ( - ns_parser.country.replace("_", " ").title().split(",") - if ns_parser.country - else [] - ) - if ns_parser.spec_date: start_date = ns_parser.spec_date.strftime("%Y-%m-%d") end_date = ns_parser.spec_date.strftime("%Y-%m-%d") else: start_date, end_date = sorted([start_date, end_date]) + + countries = list_from_str(ns_parser.countries) + nasdaq_view.display_economic_calendar( - country=countries, + countries=countries, start_date=start_date, end_date=end_date, limit=ns_parser.limit, diff --git a/openbb_terminal/economy/nasdaq_model.py b/openbb_terminal/economy/nasdaq_model.py index a81bd887430..e6ec2eea9a7 100644 --- a/openbb_terminal/economy/nasdaq_model.py +++ b/openbb_terminal/economy/nasdaq_model.py @@ -43,11 +43,11 @@ def get_economic_calendar( -------- Get todays economic calendar for the United States >>> from openbb_terminal.sdk import openbb - >>> calendar = openbb.economy.events("United States") + >>> calendar = openbb.economy.events("united_states") To get multiple countries for a given date, pass the same start and end date as well as a list of countries - >>> calendars = openbb.economy.events(["United States","Canada"], start_date="2022-11-18", end_date="2022-11-18") + >>> calendars = openbb.economy.events(["united_states", "canada"], start_date="2022-11-18", end_date="2022-11-18") """ if start_date is None: @@ -60,6 +60,9 @@ def get_economic_calendar( countries = [] if isinstance(countries, str): countries = [countries] + + countries = [country.replace("_", " ").title() for country in countries] + if start_date == end_date: dates = [start_date] else: @@ -88,7 +91,14 @@ def get_economic_calendar( return pd.DataFrame() calendar = calendar.rename( - columns={"gmt": "Time (GMT)", "country": "Country", "eventName": "Event"} + columns={ + "gmt": "Time (GMT)", + "country": "Country", + "eventName": "Event", + "actual": "Actual", + "consensus": "Consensus", + "previous": "Previous", + } ) calendar = calendar.drop(columns=["description"]) @@ -97,7 +107,7 @@ def get_economic_calendar( calendar = calendar[calendar["Country"].isin(countries)].reset_index(drop=True) if calendar.empty: - console.print(f"[red]No data found for {','.join(countries)}[/red]") + console.print(f"[red]No data found for {', '.join(countries)}[/red]") return pd.DataFrame() return calendar @@ -135,6 +145,22 @@ def get_country_codes() -> List[str]: return codes +@log_start_end(log=logger) +def get_country_names() -> List[str]: + """Get available country names in Nasdaq API + + Returns + ------- + List[str] + List of country names. + """ + file = os.path.join(os.path.dirname(__file__), "NASDAQ_CountryCodes.csv") + df = pd.read_csv(file, index_col=0) + countries = df["Country"] + countries_list = [x.lower().replace(" ", "_") for x in countries] + return countries_list + + @log_start_end(log=logger) @check_api_key(["API_KEY_QUANDL"]) def get_big_mac_index(country_code: str = "USA") -> pd.DataFrame: diff --git a/openbb_terminal/economy/nasdaq_view.py b/openbb_terminal/economy/nasdaq_view.py index 2fdebe67799..19c59b39a18 100644 --- a/openbb_terminal/economy/nasdaq_view.py +++ b/openbb_terminal/economy/nasdaq_view.py @@ -25,14 +25,18 @@ logger = logging.getLogger(__name__) @log_start_end(log=logger) def display_economic_calendar( - country: str, start_date: str, end_date: str, limit: int = 10, export: str = "" + countries: List[str], + start_date: str, + end_date: str, + limit: int = 10, + export: str = "", ) -> None: """Display economic calendar for specified country between start and end dates Parameters ---------- - country : str - Country to display calendar for + countries : List[str] + List of countries to include in calendar. Empty returns all start_date : str Start date for calendar end_date : str @@ -42,7 +46,7 @@ def display_economic_calendar( export : str Export data to csv or excel file """ - df = nasdaq_model.get_economic_calendar(country, start_date, end_date) + df = nasdaq_model.get_economic_calendar(countries, start_date, end_date) if df.empty: return print_rich_table( diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economy.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economy.openbb index 77a7c33d896..a7281b1e2e2 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economy.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economy.openbb @@ -24,8 +24,9 @@ ycrv ycrv --source FRED --date 2022-10-03 --raw ycrv -c united_states --source Investing events -events --country united_states -i high --cat employment -s 2022-07-07 -e 2022-07-08 -events -c spain --source Investing +events --country united_states -s 2022-07-07 -e 2022-07-08 +events -c spain,canada +events -n edebt --limit 10 spread spread --group PIIGS --color binary diff --git a/tests/openbb_terminal/economy/csv/test_nasdaq_model/test_get_economic_calendar.csv b/tests/openbb_terminal/economy/csv/test_nasdaq_model/test_get_economic_calendar.csv index 912e2ad4df0..cc77eefe1d7 100644 --- a/tests/openbb_terminal/economy/csv/test_nasdaq_model/test_get_economic_calendar.csv +++ b/tests/openbb_terminal/economy/csv/test_nasdaq_model/test_get_economic_calendar.csv @@ -1,4 +1,4 @@ -,Time (GMT),Country,Event,actual,consensus,previous,Date +,Time (GMT),Country,Event,Actual,Consensus,Previous,Date 0,08:30,United States,Continuing Jobless Claims,"1,385K","1,375K","1,364K",2022-10-20 1,08:30,United States,Initial Jobless Claims,214K,230K,226K,2022-10-20 2,08:30,United States,Jobless Claims 4-Week Avg.,212.25K,-,211.00K,2022-10-20 diff --git a/tests/openbb_terminal/economy/test_economy_controller.py b/tests/openbb_terminal/economy/test_economy_controller.py index 3b0e84900e9..6e1a8d8ee43 100644 --- a/tests/openbb_terminal/economy/test_economy_controller.py +++ b/tests/openbb_terminal/economy/test_economy_controller.py @@ -576,7 +576,7 @@ def test_call_func_expect_queue(expected_queue, func, queue): "call_events", [ "--export=csv", - "--country=united_states", + "--countries=united_states", "--start=2022-10-20", "--end=2022-10-21", "--limit=10", @@ -584,7 +584,7 @@ def test_call_func_expect_queue(expected_queue, func, queue): "nasdaq_view.display_economic_calendar", [], dict( - country=["United States"], + countries=["united_states"], start_date="2022-10-20", end_date="2022-10-21", export="csv", @@ -595,18 +595,18 @@ def test_call_func_expect_queue(expected_queue, func, queue): "call_events", [ "--export=csv", - "--country=united_states", + "--countries=united_states,canada", "--date=2023-10-20", "--limit=10", ], "nasdaq_view.display_economic_calendar", [], dict( - country=["United States"], + countries=["united_states", "canada"], start_date="2023-10-20", end_date="2023-10-20", - export="csv", limit=10, + export="csv", ), ), ( diff --git a/tests/openbb_terminal/economy/txt/test_nasdaq_view/test_display_economic_calendar.txt b/tests/openbb_terminal/economy/txt/test_nasdaq_view/test_display_economic_calendar.txt index 35a3fed8824..c65813bedb6 100644 --- a/tests/openbb_terminal/economy/txt/test_nasdaq_view/test_display_economic_calendar.txt +++ b/tests/openbb_terminal/economy/txt/test_nasdaq_view/test_display_economic_calendar.txt @@ -1,4 +1,4 @@ - Time (GMT) Country Event actual consensus previous Date + Time (GMT) Country Event Actual Consensus Previous Date 0 08:30 United States Continuing Jobless Claims 1,385K 1,375K 1,364K 2022-10-20 1 08:30 United States Initial Jobless Claims 214K 230K 226K 2022-10-20 2 08:30 United States Jobless Claims 4-Week Avg. 212.25K - 211.00K 2022-10-20