mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 13:01:38 +00:00
* Update portfolio_view.py * mypy 1.0 test * Update helpers.py * black * ruff * Update thought_of_the_day.py * isort * Update portfolio_view.py * Update business_insider_view.py * funds,bt,ca,fa view updates * economy,etf,futures view updates * econometrics regression * mypy * reports notebooks, PlotlyTA class adjustments, crypto finbrain view * crypto views updates * crypto views done?, ba, econometrics, funds, reports * update docstrings * Update sec_view.py * portfolio reports * Update equity.ipynb * ruff * mypy + equity reports * Update yahoo_finance_view.py * Update economy_controller.py * clean up returns * mypy * finished dashboards/reports templates * update some tests * Update common.py * Update account_controller.py * Update banner.txt * update tests * tests * Update helpers_denomination.py * tests * tests * finished tests, refactor add_histplot/add_corr_plot * ruff * Update backend.py * mypy * Update backend.py * pywry linux libs for tests * pywry version bump * OpenBBFIgure import changes * Update business_insider_view.py * Update backend.py * tests * bump pywry version * forecast plot_explainability converted to plotly * Update helpers.py * tests * Update helpers.py * tests * Update helpers.py * Update helpers.py * default plotly annotation `showarrow` to false * Update backend.py * fixes * Update poetry.lock * docker * Update openbb.dockerfile * up * Update style.css * bump pywry version * Update unit-test.yml * Update unit-test.yml * figure to image/pdf export * requirements txt files, pywry version bump * mypy, pylint * cleanup * Update covid_view.py * Update helper_funcs.py * Update backend.py * updates * Update backend.py * Update backend.py * bump pywry version * Update poetry.lock * Update trailmap.py * update reports * Update custom_indicators_plugin.py * Update momentum_plugin.py * equity report * reqs files * Update fred_view.py * ruff * Update po_view.py * bump pywry version * reqs txt files * fix installer icons for mac * test updated torch/darts/pyinstaller on mac * Update dashboards_controller.py * Update terminal.py * Update terminal.spec * Update terminal.spec * test * Update poetry.lock * Report adjustments, improved dashboard subprocesses termination * pylint * Update plotly_helper.py * Update plotly_helper.py * pylint * revert darts * test * test * fix * improve shap scatter plot * Update helpers.py * Update helpers.py * cleanup * Update runa_view.py * more cleanupp * fixes * update tests * Update intrinio_view.py * Update intrinio_view.py * Update intrinio_view.py * reqs files, poetry lock * Update backend.py * test for new icon * Update fmp_view.py * updates * Update plotly_helper.py * Update businessinsider_view.py * ruff * pylint * fix previous merge * Update plotly_helper.py * update reqs files * Update directories.py * fix alt covid * fix display_candle data is None load being unreachable, get covid views ready for sdk server * Update covid_view.py * refactor cleanup * plotly_ta adjustments * terminal wide ignore print_table if export * Update plotly_helper.py * forgot to save a few * added edge case fallback if figures are in queue before backend fail * Update ta_class.py * Rename env variable name required to return plotly json * Resolve pydocstyle warnings * Resolve linting errors * revert forecasting/pyinstaller versions * Update terminal.spec * finished incoming fixedincome menu, improve get_ecb_yield_curve speed with multiprocessing * update deps * Update backend.py * fix fred model/view from switch to DataFrame, improve ecb_model * Update config_terminal.py * Update backend.py * black * clean up * Update fred_view.py * Update ta_class.py * Update ta_class.py * Update plotly_helper.py * sync fixedincome * Update ecb_model.py * convert excel to csv for faster processing * cleanup * remove excel files * Update terminal_controller.py * update tests * adjustments/missed figs in export_data * Update cryptocurrency_helpers.py * fixes * account for volume column with no volume when plotting indicators , images autogen POC * Update plotly_helper.py * Update etf_controller.py * Update etf_controller.py * margin arg for export_data func figures, some plot adjustments * logic for numpy array for plotly helper `get_dateindex` function * cleanup * update * req file updates * views * Update backend.py * update tests * Update test_load_none[btc-usd].yaml * convert merged cpi chart * linting * updates * clean * tests * Update openbb.dockerfile * remove test docker in root * Update CONTRIBUTING.md --------- Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com> Co-authored-by: Chavithra <chavithra@gmail.com>
113 lines
2.8 KiB
Python
113 lines
2.8 KiB
Python
from typing import Tuple
|
|
|
|
from prompt_toolkit import PromptSession
|
|
|
|
import openbb_terminal.session.local_model as Local
|
|
from openbb_terminal import terminal_controller
|
|
from openbb_terminal.core.config.paths import PACKAGE_DIRECTORY
|
|
from openbb_terminal.rich_config import console
|
|
from openbb_terminal.session.hub_model import REGISTER_URL
|
|
from openbb_terminal.session.session_model import (
|
|
LoginStatus,
|
|
create_session,
|
|
login,
|
|
)
|
|
|
|
|
|
def display_welcome_message():
|
|
"""Display welcome message"""
|
|
with open(PACKAGE_DIRECTORY / "session" / "banner.txt") as f:
|
|
console.print(f"[menu]{f.read()}[/menu]\n")
|
|
console.print(f"Register : [cmds]{REGISTER_URL}[/cmds]")
|
|
console.print("Ask support : [cmds]https://openbb.co/support[/cmds]")
|
|
console.print(
|
|
"[yellow]\nWARNING: This is a pre-release version published for testing.[/yellow]"
|
|
"[yellow]\nBeware that your account will be deleted without notice.[/yellow]"
|
|
)
|
|
|
|
|
|
def get_user_input() -> Tuple[str, str, bool]:
|
|
"""Get user input
|
|
|
|
Returns
|
|
-------
|
|
Tuple[str, str, bool]
|
|
The user email, password and save login option.
|
|
"""
|
|
console.print("[info]\nPlease enter your credentials:[/info]")
|
|
|
|
s: PromptSession = PromptSession()
|
|
|
|
email = s.prompt(
|
|
message="> Email: ",
|
|
)
|
|
if not email:
|
|
return "", "", False
|
|
|
|
password = s.prompt(
|
|
message="> Password: ",
|
|
is_password=True,
|
|
)
|
|
save_str = s.prompt(message="> Remember me? (y/n): ", is_password=False).lower()
|
|
save = False
|
|
if save_str == "y":
|
|
save = True
|
|
|
|
return email, password, save
|
|
|
|
|
|
def prompt(welcome=True):
|
|
"""Prompt and launch terminal if login is successful.
|
|
|
|
Parameters
|
|
----------
|
|
welcome : bool, optional
|
|
Display welcome message, by default True
|
|
"""
|
|
if welcome:
|
|
display_welcome_message()
|
|
|
|
while True:
|
|
email, password, save = get_user_input()
|
|
if not email or not password:
|
|
continue
|
|
|
|
session = create_session(email, password, save)
|
|
if isinstance(session, dict) and session:
|
|
return login_and_launch(session=session)
|
|
|
|
|
|
def launch_terminal():
|
|
"""Launch terminal"""
|
|
terminal_controller.parse_args_and_run()
|
|
|
|
|
|
def login_and_launch(session: dict):
|
|
"""Login and launch terminal.
|
|
|
|
Parameters
|
|
----------
|
|
session : dict
|
|
The session info.
|
|
"""
|
|
status = login(session)
|
|
if status in [LoginStatus.SUCCESS, LoginStatus.NO_RESPONSE]:
|
|
launch_terminal()
|
|
elif status == LoginStatus.FAILED:
|
|
prompt(welcome=False)
|
|
else:
|
|
prompt(welcome=True)
|
|
|
|
|
|
def main():
|
|
"""Main function"""
|
|
local_session = Local.get_session()
|
|
if not local_session:
|
|
prompt()
|
|
else:
|
|
login_and_launch(session=local_session)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|