mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 04:52:07 +00:00
Update settings logger (#4597)
* update settings loggers * change to python version * update sdk helper * pylint
This commit is contained in:
@@ -1,17 +1,11 @@
|
||||
# IMPORTATION STANDARD
|
||||
import json
|
||||
import logging
|
||||
import platform
|
||||
from types import FunctionType, ModuleType
|
||||
|
||||
# IMPORTATION THIRDPARTY
|
||||
# IMPORTATION INTERNAL
|
||||
from openbb_terminal import config_terminal as cfg
|
||||
from openbb_terminal.core.log.generation.common import do_rollover
|
||||
from openbb_terminal.core.models.credentials_model import CredentialsModel
|
||||
from openbb_terminal.core.models.user_model import UserModel
|
||||
from openbb_terminal.core.session.current_system import get_current_system
|
||||
from openbb_terminal.core.session.current_user import get_current_user
|
||||
from openbb_terminal.terminal_helper import is_installer
|
||||
|
||||
SENSITIVE_WORDS = [
|
||||
"API",
|
||||
@@ -30,103 +24,21 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
def log_all_settings(with_rollover: bool = True) -> None:
|
||||
"""Log all settings"""
|
||||
log_settings()
|
||||
log_config_terminal()
|
||||
log_feature_flags()
|
||||
log_keys()
|
||||
log_system()
|
||||
log_credentials()
|
||||
log_preferences()
|
||||
|
||||
if with_rollover:
|
||||
do_rollover()
|
||||
|
||||
|
||||
def log_settings() -> None:
|
||||
"""Log settings"""
|
||||
current_user = get_current_user()
|
||||
settings_dict = {}
|
||||
settings_dict["tab"] = (
|
||||
"True" if current_user.preferences.USE_TABULATE_DF else "False"
|
||||
)
|
||||
settings_dict["cls"] = (
|
||||
"True" if current_user.preferences.USE_CLEAR_AFTER_CMD else "False"
|
||||
)
|
||||
settings_dict["color"] = "True" if current_user.preferences.USE_COLOR else "False"
|
||||
settings_dict["promptkit"] = (
|
||||
"True" if current_user.preferences.USE_PROMPT_TOOLKIT else "False"
|
||||
)
|
||||
settings_dict["thoughts"] = (
|
||||
"True" if current_user.preferences.ENABLE_THOUGHTS_DAY else "False"
|
||||
)
|
||||
settings_dict["reporthtml"] = (
|
||||
"True" if current_user.preferences.OPEN_REPORT_AS_HTML else "False"
|
||||
)
|
||||
settings_dict["exithelp"] = (
|
||||
"True" if current_user.preferences.ENABLE_EXIT_AUTO_HELP else "False"
|
||||
)
|
||||
settings_dict["rcontext"] = (
|
||||
"True" if current_user.preferences.REMEMBER_CONTEXTS else "False"
|
||||
)
|
||||
settings_dict["rich"] = "True" if current_user.preferences.ENABLE_RICH else "False"
|
||||
settings_dict["richpanel"] = (
|
||||
"True" if current_user.preferences.ENABLE_RICH_PANEL else "False"
|
||||
)
|
||||
settings_dict["ion"] = "True" if current_user.preferences.USE_ION else "False"
|
||||
settings_dict["watermark"] = (
|
||||
"True" if current_user.preferences.USE_WATERMARK else "False"
|
||||
)
|
||||
settings_dict["autoscaling"] = (
|
||||
"True" if current_user.preferences.USE_PLOT_AUTOSCALING else "False"
|
||||
)
|
||||
settings_dict["dt"] = "True" if current_user.preferences.USE_DATETIME else "False"
|
||||
settings_dict["packaged"] = "True" if is_installer() else "False"
|
||||
settings_dict["python"] = str(platform.python_version())
|
||||
settings_dict["os"] = str(platform.system())
|
||||
|
||||
logger.info("SETTINGS: %s ", json.dumps(settings_dict))
|
||||
def log_system() -> None:
|
||||
"""Log system"""
|
||||
logger.info("SYSTEM: %s ", json.dumps(get_current_system().to_dict()))
|
||||
|
||||
|
||||
def log_config_terminal() -> None:
|
||||
"""Log config_terminal"""
|
||||
|
||||
config_terminal_dict = {}
|
||||
|
||||
for item in dir(cfg):
|
||||
prop = getattr(cfg, item)
|
||||
# pylint: disable=too-many-boolean-expressions
|
||||
if (
|
||||
not item.startswith("__")
|
||||
and not isinstance(prop, FunctionType)
|
||||
and not isinstance(prop, ModuleType)
|
||||
and not isinstance(prop, UserModel)
|
||||
and not isinstance(prop, CredentialsModel)
|
||||
and not any(substring in item for substring in SENSITIVE_WORDS)
|
||||
):
|
||||
config_terminal_dict[item] = str(prop)
|
||||
|
||||
logger.info("CONFIG_TERMINAL: %s ", json.dumps(config_terminal_dict))
|
||||
|
||||
|
||||
def log_feature_flags() -> None:
|
||||
"""Log feature flags"""
|
||||
|
||||
current_user = get_current_user()
|
||||
feature_flags_dict = {}
|
||||
|
||||
for item in dir(current_user.preferences):
|
||||
prop = getattr(current_user.preferences, item)
|
||||
if (
|
||||
not item.startswith("__")
|
||||
and not isinstance(prop, FunctionType)
|
||||
and not isinstance(prop, ModuleType)
|
||||
and not isinstance(prop, UserModel)
|
||||
and not isinstance(prop, CredentialsModel)
|
||||
):
|
||||
feature_flags_dict[item] = str(prop)
|
||||
|
||||
logger.info("FEATURE_FLAGS: %s ", json.dumps(feature_flags_dict))
|
||||
|
||||
|
||||
def log_keys() -> None:
|
||||
"""Log keys"""
|
||||
def log_credentials() -> None:
|
||||
"""Log credentials"""
|
||||
|
||||
current_user = get_current_user()
|
||||
|
||||
@@ -143,3 +55,10 @@ def log_keys() -> None:
|
||||
current_keys[cfg_var_name] = "not_defined"
|
||||
|
||||
logger.info("KEYS: %s ", json.dumps(current_keys))
|
||||
|
||||
|
||||
def log_preferences() -> None:
|
||||
"""Log preferences"""
|
||||
logger.info(
|
||||
"PREFERENCES: %s ", json.dumps(get_current_user().preferences.to_dict())
|
||||
)
|
||||
|
||||
@@ -28,6 +28,15 @@ class BaseModel:
|
||||
return getattr(self, field)
|
||||
return None
|
||||
|
||||
def to_dict(self) -> dict[str, Any]:
|
||||
"""Convert model to dict."""
|
||||
d = self.__dict__.copy()
|
||||
keys = list(d.keys())
|
||||
for key in keys:
|
||||
if key.startswith("_"):
|
||||
del d[key]
|
||||
return d
|
||||
|
||||
def get_default(self, field: str) -> Optional[Any]:
|
||||
"""Get default field value."""
|
||||
if hasattr(self, field):
|
||||
|
||||
@@ -1,16 +1,25 @@
|
||||
import platform
|
||||
import sys
|
||||
from typing import Literal
|
||||
|
||||
from pydantic.dataclasses import dataclass
|
||||
|
||||
from openbb_terminal.core.models import BaseModel
|
||||
|
||||
# pylint: disable=too-many-instance-attributes
|
||||
|
||||
|
||||
@dataclass(config=dict(validate_assignment=True, frozen=True))
|
||||
class SystemModel(BaseModel):
|
||||
"""Data model for system variables and configurations."""
|
||||
|
||||
# System version
|
||||
# System section
|
||||
OS: str = str(platform.system())
|
||||
PYTHON_VERSION: str = str(platform.python_version())
|
||||
|
||||
# OpenBB section
|
||||
VERSION = "3.0.0rc1"
|
||||
PACKAGED: bool = getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS")
|
||||
|
||||
# Logging section
|
||||
LOGGING_APP_NAME: str = "gst"
|
||||
|
||||
@@ -264,11 +264,13 @@ class OperationLogger:
|
||||
|
||||
if func_module == "openbb_terminal.keys_model":
|
||||
# pylint: disable=C0415
|
||||
from openbb_terminal.core.log.generation.settings_logger import log_keys
|
||||
from openbb_terminal.core.log.generation.settings_logger import (
|
||||
log_credentials,
|
||||
)
|
||||
|
||||
# remove key if defined
|
||||
function_args.pop("key", None)
|
||||
log_keys()
|
||||
log_credentials()
|
||||
return function_args
|
||||
|
||||
def log_after_call(
|
||||
|
||||
Reference in New Issue
Block a user