diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index fe163d00131..8e3872037b4 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -113,6 +113,7 @@ en: economy: global macroeconomic data, e.g. futures, yield, treasury forex: foreign exchanges, quotes, forward rates for currency pairs and oanda integration funds: mutual funds search, overview, holdings and sector weights + poc_plat_equity: poc for platform's equity router futures: commodities, bonds, index, bitcoin and forex futures/search: search for a future based on category or exchange futures/historical: get historical timeseries diff --git a/openbb_terminal/poc_platform_equity_controller.py b/openbb_terminal/poc_platform_equity_controller.py new file mode 100644 index 00000000000..54cac0273c6 --- /dev/null +++ b/openbb_terminal/poc_platform_equity_controller.py @@ -0,0 +1,75 @@ +"""Platform Equity Controller.""" +__docformat__ = "numpy" + +import logging +from functools import partial, update_wrapper +from types import MethodType +from typing import List, Optional + +from openbb import obb + +from argparse_translator.argparse_class_processor import ArgparseClassProcessor +from openbb_terminal.core.session.current_user import get_current_user +from openbb_terminal.custom_prompt_toolkit import NestedCompleter +from openbb_terminal.menu import session +from openbb_terminal.parent_classes import BaseController +from openbb_terminal.rich_config import MenuText, console + +# pylint: disable=R1710,import-outside-toplevel + +logger = logging.getLogger(__name__) + +equity = ArgparseClassProcessor(target_class=obb.equity) + + +class PocPlatformEquityController(BaseController): + """Forex Controller class.""" + + CHOICES_COMMANDS = list(equity.translators.keys()) + + PATH = "/pocplat/" + # FILE_PATH = os.path.join(os.path.dirname(__file__), "README.md") + CHOICES_GENERATION = True + + def __init__(self, queue: Optional[List[str]] = None): + """Construct Data.""" + super().__init__(queue) + + self._generate_commands() + + if session and get_current_user().preferences.USE_PROMPT_TOOLKIT: + choices: dict = self.choices_default + self.completer = NestedCompleter.from_nested_dict(choices) + + def _generate_commands(self): + for name, translator in equity.translators.items(): + + def method(self, other_args: List[str], translator=translator): + parser = translator.parser + + if ns_parser := self.parse_known_args_and_warn(parser, other_args): + try: + obbject = translator.execute_func(parsed_args=ns_parser) + console.print(obbject.to_dataframe()) + + except Exception as e: + console.print(f"[red]{e}[/]\n") + return + + # Bind the method to the class + bound_method = MethodType(method, self.__class__) + + # Update the wrapper and set the attribute + bound_method = update_wrapper( + partial(bound_method, translator=translator), method + ) + setattr(self.__class__, f"call_{name}", bound_method) + + def print_help(self): + """Print help.""" + mt = MenuText("poc_plat_equity/", 80) + + for cmd in self.CHOICES_COMMANDS: + mt.add_cmd(cmd) + + console.print(text=mt.menu_text, menu="POC Platform Equity") diff --git a/openbb_terminal/stocks/stocks_controller.py b/openbb_terminal/stocks/stocks_controller.py index 6c915658393..9aaee41ca93 100644 --- a/openbb_terminal/stocks/stocks_controller.py +++ b/openbb_terminal/stocks/stocks_controller.py @@ -8,7 +8,9 @@ from datetime import datetime, timedelta from typing import List, Optional import financedatabase as fd +from openbb import obb +from argparse_translator.argparse_class_processor import ArgparseClassProcessor from openbb_terminal import config_terminal from openbb_terminal.common import ( feedparser_view, @@ -35,8 +37,6 @@ from openbb_terminal.terminal_helper import suppress_stdout logger = logging.getLogger(__name__) -from openbb import obb -from argparse_translator.argparse_class_processor import ArgparseClassProcessor equity_price_translations = ArgparseClassProcessor(target_class=obb.equity.price) @@ -157,7 +157,9 @@ class StocksController(StockBaseController): def call_load(self, other_args: List[str]): """Process load command.""" - translator = equity_price_translations.get_translator(command="historical") + translator = equity_price_translations.get_translator( + command="equity_price_historical" + ) parser = translator.parser if ns_parser := self.parse_known_args_and_warn(parser, other_args): diff --git a/openbb_terminal/terminal_controller.py b/openbb_terminal/terminal_controller.py index abda862b6bd..c9c5ec3dbd8 100644 --- a/openbb_terminal/terminal_controller.py +++ b/openbb_terminal/terminal_controller.py @@ -108,6 +108,7 @@ class TerminalController(BaseController): "futures", "fixedincome", "funds", + "poc_plat_equity", ] if is_auth_enabled(): @@ -244,6 +245,7 @@ class TerminalController(BaseController): mt.add_menu("fixedincome") mt.add_menu("alternative") mt.add_menu("funds") + mt.add_menu("poc_plat_equity") mt.add_raw("\n") mt.add_info("_toolkits_") mt.add_menu("econometrics") @@ -605,6 +607,14 @@ class TerminalController(BaseController): self.queue = self.load_class(FundController, self.queue) + def call_poc_plat_equity(self, _): + """Process poc_platform_equity command.""" + from openbb_terminal.poc_platform_equity_controller import ( + PocPlatformEquityController, + ) + + self.queue = self.load_class(PocPlatformEquityController, self.queue) + def call_intro(self, _): """Process intro command.""" webbrowser.open(