From a91b8728a1e8ec04bc2b770dba7ec5cb67fe4d27 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Thu, 24 Nov 2022 10:48:14 +0000 Subject: [PATCH] SDK import no extras warning (#3550) * warn users if no extras * add path to config * warning first time only * this btter --- openbb_terminal/core/library/trail_map.py | 56 +++++++++++++++++-- .../miscellaneous/library/trail_map.csv | 24 -------- .../library/trail_map_optimization.csv | 25 +++++++++ openbb_terminal/reports/reports_controller.py | 16 +++--- 4 files changed, 84 insertions(+), 37 deletions(-) create mode 100644 openbb_terminal/miscellaneous/library/trail_map_optimization.csv diff --git a/openbb_terminal/core/library/trail_map.py b/openbb_terminal/core/library/trail_map.py index 8215382e59b..bf738eea78a 100644 --- a/openbb_terminal/core/library/trail_map.py +++ b/openbb_terminal/core/library/trail_map.py @@ -1,18 +1,56 @@ from pathlib import Path from typing import Dict, Optional +import dotenv import pandas as pd -from openbb_terminal.core.config.paths import MISCELLANEOUS_DIRECTORY +from openbb_terminal.base_helpers import load_env_vars, strtobool +from openbb_terminal.core.config.paths import MISCELLANEOUS_DIRECTORY, USER_ENV_FILE +from openbb_terminal.rich_config import console + +DISABLE_FORECASTING_WARNING = load_env_vars( + "OPENBB_DISABLE_FORECASTING_WARNING", strtobool, False +) try: import darts # pylint: disable=W0611 # noqa: F401 - from darts import utils # pylint: disable=W0611 # noqa: F401 - FORECASTING = True -except ImportError: - FORECASTING = False + FORECASTING_TOOLKIT_ENABLED = True +except ModuleNotFoundError: + FORECASTING_TOOLKIT_ENABLED = False + if not DISABLE_FORECASTING_WARNING: + dotenv.set_key(str(USER_ENV_FILE), "OPENBB_DISABLE_FORECASTING_WARNING", "True") + console.print( + "[yellow]" + "Forecasting Toolkit is disabled. " + "To use the Forecasting features please install the toolkit following the " + "instructions here: https://docs.openbb.co/sdk/quickstart/installation/" + "\n" + "[/yellow]" + ) + +DISABLE_OPTIMIZATION_WARNING = load_env_vars( + "OPENBB_DISABLE_OPTIMIZATION_WARNING", strtobool, False +) +try: + import riskfolio # pylint: disable=W0611 # noqa: F401 + + OPTIMIZATION_TOOLKIT_ENABLED = True +except ModuleNotFoundError: + OPTIMIZATION_TOOLKIT_ENABLED = False + if not DISABLE_OPTIMIZATION_WARNING: + dotenv.set_key( + str(USER_ENV_FILE), "OPENBB_DISABLE_OPTIMIZATION_WARNING", "True" + ) + console.print( + "[yellow]" + "Portfolio Optimization Toolkit is disabled. " + "To use the Optimization features please install the toolkit following the " + "instructions here: https://docs.openbb.co/sdk/quickstart/installation/" + "\n" + "[/yellow]" + ) class TrailMap: @@ -20,6 +58,9 @@ class TrailMap: MAP_FORECASTING_PATH = ( MISCELLANEOUS_DIRECTORY / "library" / "trail_map_forecasting.csv" ) + MAP_OPTIMIZATION_PATH = ( + MISCELLANEOUS_DIRECTORY / "library" / "trail_map_optimization.csv" + ) @classmethod def load_csv(cls, path: Path = None) -> Dict[str, Dict[str, str]]: @@ -84,9 +125,12 @@ class TrailMap: def load(self): map_dict = self.load_csv(path=self.MAP_PATH) - if FORECASTING: + if FORECASTING_TOOLKIT_ENABLED: map_forecasting_dict = self.load_csv(path=self.MAP_FORECASTING_PATH) map_dict = {**map_dict, **map_forecasting_dict} + if OPTIMIZATION_TOOLKIT_ENABLED: + map_optimization_dict = self.load_csv(path=self.MAP_OPTIMIZATION_PATH) + map_dict = {**map_dict, **map_optimization_dict} self.__map_dict = map_dict diff --git a/openbb_terminal/miscellaneous/library/trail_map.csv b/openbb_terminal/miscellaneous/library/trail_map.csv index 4cbe28b3fc2..3690267c0bc 100644 --- a/openbb_terminal/miscellaneous/library/trail_map.csv +++ b/openbb_terminal/miscellaneous/library/trail_map.csv @@ -333,30 +333,6 @@ portfolio.perf,openbb_terminal.portfolio.portfolio_model.get_performance_vs_benc portfolio.var,openbb_terminal.portfolio.portfolio_model.get_var, portfolio.es,openbb_terminal.portfolio.portfolio_model.get_es, portfolio.om,openbb_terminal.portfolio.portfolio_model.get_omega,openbb_terminal.portfolio.portfolio_view.display_omega -portfolio.po.load,openbb_terminal.portfolio.portfolio_optimization.po_model.generate_portfolio, -portfolio.po.file,openbb_terminal.portfolio.portfolio_optimization.po_model.load_parameters_file, -portfolio.po.show,openbb_terminal.portfolio.portfolio_optimization.po_model.show, -portfolio.po.load_bl_views,openbb_terminal.portfolio.portfolio_optimization.excel_model.load_bl_views, -portfolio.po.maxsharpe,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxsharpe, -portfolio.po.minrisk,openbb_terminal.portfolio.portfolio_optimization.po_model.get_minrisk, -portfolio.po.maxutil,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxutil, -portfolio.po.maxret,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxret, -portfolio.po.maxdiv,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxdiv, -portfolio.po.maxdecorr,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxdecorr, -portfolio.po.blacklitterman,openbb_terminal.portfolio.portfolio_optimization.po_model.get_blacklitterman, -portfolio.po.ef,openbb_terminal.portfolio.portfolio_optimization.po_model.get_ef,openbb_terminal.portfolio.portfolio_optimization.po_view.display_ef -portfolio.po.riskparity,openbb_terminal.portfolio.portfolio_optimization.po_model.get_riskparity, -portfolio.po.relriskparity,openbb_terminal.portfolio.portfolio_optimization.po_model.get_relriskparity, -portfolio.po.hrp,openbb_terminal.portfolio.portfolio_optimization.po_model.get_hrp, -portfolio.po.herc,openbb_terminal.portfolio.portfolio_optimization.po_model.get_herc, -portfolio.po.nco,openbb_terminal.portfolio.portfolio_optimization.po_model.get_nco, -portfolio.po.hcp,openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_hcp_portfolio, -portfolio.po.equal,openbb_terminal.portfolio.portfolio_optimization.po_model.get_equal, -portfolio.po.mktcap,openbb_terminal.portfolio.portfolio_optimization.po_model.get_mktcap, -portfolio.po.dividend,openbb_terminal.portfolio.portfolio_optimization.po_model.get_dividend, -portfolio.po.property,openbb_terminal.portfolio.portfolio_optimization.po_model.get_property, -portfolio.po.get_properties,openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_properties, -portfolio.po.plot,openbb_terminal.portfolio.portfolio_optimization.po_view.display_plot,openbb_terminal.portfolio.portfolio_optimization.po_view.display_plot stocks.ba.cnews,openbb_terminal.stocks.behavioural_analysis.finnhub_model.get_company_news, stocks.ba.snews,openbb_terminal.stocks.behavioural_analysis.finnhub_model.get_headlines_sentiment,openbb_terminal.stocks.behavioural_analysis.finnhub_view.display_stock_price_headlines_sentiment stocks.ca.similar,openbb_terminal.stocks.comparison_analysis.sdk_helpers.get_similar, diff --git a/openbb_terminal/miscellaneous/library/trail_map_optimization.csv b/openbb_terminal/miscellaneous/library/trail_map_optimization.csv new file mode 100644 index 00000000000..be29978986d --- /dev/null +++ b/openbb_terminal/miscellaneous/library/trail_map_optimization.csv @@ -0,0 +1,25 @@ +trail,model,view +portfolio.po.load,openbb_terminal.portfolio.portfolio_optimization.po_model.generate_portfolio, +portfolio.po.file,openbb_terminal.portfolio.portfolio_optimization.po_model.load_parameters_file, +portfolio.po.show,openbb_terminal.portfolio.portfolio_optimization.po_model.show, +portfolio.po.load_bl_views,openbb_terminal.portfolio.portfolio_optimization.excel_model.load_bl_views, +portfolio.po.maxsharpe,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxsharpe, +portfolio.po.minrisk,openbb_terminal.portfolio.portfolio_optimization.po_model.get_minrisk, +portfolio.po.maxutil,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxutil, +portfolio.po.maxret,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxret, +portfolio.po.maxdiv,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxdiv, +portfolio.po.maxdecorr,openbb_terminal.portfolio.portfolio_optimization.po_model.get_maxdecorr, +portfolio.po.blacklitterman,openbb_terminal.portfolio.portfolio_optimization.po_model.get_blacklitterman, +portfolio.po.ef,openbb_terminal.portfolio.portfolio_optimization.po_model.get_ef,openbb_terminal.portfolio.portfolio_optimization.po_view.display_ef +portfolio.po.riskparity,openbb_terminal.portfolio.portfolio_optimization.po_model.get_riskparity, +portfolio.po.relriskparity,openbb_terminal.portfolio.portfolio_optimization.po_model.get_relriskparity, +portfolio.po.hrp,openbb_terminal.portfolio.portfolio_optimization.po_model.get_hrp, +portfolio.po.herc,openbb_terminal.portfolio.portfolio_optimization.po_model.get_herc, +portfolio.po.nco,openbb_terminal.portfolio.portfolio_optimization.po_model.get_nco, +portfolio.po.hcp,openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_hcp_portfolio, +portfolio.po.equal,openbb_terminal.portfolio.portfolio_optimization.po_model.get_equal, +portfolio.po.mktcap,openbb_terminal.portfolio.portfolio_optimization.po_model.get_mktcap, +portfolio.po.dividend,openbb_terminal.portfolio.portfolio_optimization.po_model.get_dividend, +portfolio.po.property,openbb_terminal.portfolio.portfolio_optimization.po_model.get_property, +portfolio.po.get_properties,openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_properties, +portfolio.po.plot,openbb_terminal.portfolio.portfolio_optimization.po_view.display_plot,openbb_terminal.portfolio.portfolio_optimization.po_view.display_plot diff --git a/openbb_terminal/reports/reports_controller.py b/openbb_terminal/reports/reports_controller.py index ae4269ea2db..5a52d23205e 100644 --- a/openbb_terminal/reports/reports_controller.py +++ b/openbb_terminal/reports/reports_controller.py @@ -155,16 +155,18 @@ class ReportController(BaseController): utils, ) - forecast = True + FORECASTING_TOOLKIT_ENABLED = True except ImportError: - forecast = False + FORECASTING_TOOLKIT_ENABLED = False console.print( - "\n'forecast' menu dependencies are not installed." - " This part of the SDK will not be usable.\n\n" - "For more information see the official documentation at: " - "[blue]https://openbb-finance.github.io/OpenBBTerminal/SDK/[/blue]\n" + "[yellow]" + "Forecasting Toolkit is disabled. " + "To use the Forecasting features please install the toolkit following the " + "instructions here: https://docs.openbb.co/sdk/quickstart/installation/" + "\n" + "[/yellow]" ) - if forecast: + if FORECASTING_TOOLKIT_ENABLED: self.run_report("forecast", other_args) @log_start_end(log=logger)