From 07aa45a0b67b9dbdd9da0529e71f723df7e88eb7 Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Mon, 3 Apr 2023 23:38:55 +0200 Subject: [PATCH] Hotfix/etf ca (#4672) * Add holdings to ca * Fix major holdings load --- openbb_terminal/etf/etf_controller.py | 43 +++++++++++++++++++++------ 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/openbb_terminal/etf/etf_controller.py b/openbb_terminal/etf/etf_controller.py index 18291b2e3b1..6262bdcb911 100644 --- a/openbb_terminal/etf/etf_controller.py +++ b/openbb_terminal/etf/etf_controller.py @@ -17,6 +17,7 @@ from openbb_terminal.decorators import log_start_end from openbb_terminal.etf import ( financedatabase_view, fmp_view, + stockanalysis_model, stockanalysis_view, ) from openbb_terminal.etf.discovery import disc_controller @@ -261,6 +262,15 @@ class ETFController(BaseController): f"Loading Daily data for {self.etf_name} with starting period {ns_parser.start.strftime('%Y-%m-%d')}.", ) + try: + self.etf_holdings = list( + stockanalysis_model.get_etf_holdings(self.etf_name)[ + : ns_parser.limit + ].index + ) + except Exception as e: + console.print(f"Error: {e}") + @log_start_end(log=logger) def call_overview(self, other_args: List[str]): """Process overview command""" @@ -557,16 +567,31 @@ class ETFController(BaseController): console.print("Use 'load ' prior to this command!") @log_start_end(log=logger) - def call_ca(self, _): + def call_ca(self, other_args: List[str]): """Process ca command""" - if len(self.etf_holdings) > 0: - self.queue = ca_controller.ComparisonAnalysisController( - self.etf_holdings, self.queue - ).menu(custom_path_menu_above="/stocks/") - else: - console.print( - "Load a ticker with major holdings to compare them on this menu\n" - ) + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="ca", + description="Compare ETF's holdings with each other", + ) + + ns_parser = self.parse_known_args_and_warn( + parser, + other_args, + export_allowed=EXPORT_BOTH_RAW_DATA_AND_FIGURES, + raw=True, + ) + + if ns_parser: + if len(self.etf_holdings) == 0: + console.print( + "Load a ticker with major holdings to compare them on this menu\n" + ) + elif len(self.etf_holdings) > 0: + self.queue = ca_controller.ComparisonAnalysisController( + self.etf_holdings, self.queue + ).menu(custom_path_menu_above="/stocks/") @log_start_end(log=logger) def call_disc(self, _):