mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
[Feature] Disable LoggingService by Default (#7157)
* disable LoggingService by default * handle account login * too-many-positional-arguments * linter * is it on the right line now?
This commit is contained in:
@@ -296,9 +296,6 @@ class StaticCommandRunner:
|
||||
kwargs: Dict[str, Any],
|
||||
) -> OBBject:
|
||||
"""Execute a function and return the output."""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from openbb_core.app.logs.logging_service import LoggingService
|
||||
|
||||
user_settings = execution_context.user_settings
|
||||
system_settings = execution_context.system_settings
|
||||
raised_warnings: list = []
|
||||
@@ -369,16 +366,21 @@ class StaticCommandRunner:
|
||||
file=w.file,
|
||||
line=w.line,
|
||||
)
|
||||
ls = LoggingService(system_settings, user_settings)
|
||||
ls.log(
|
||||
user_settings=user_settings,
|
||||
system_settings=system_settings,
|
||||
route=route,
|
||||
func=func,
|
||||
kwargs=kwargs,
|
||||
exec_info=exc_info(),
|
||||
custom_headers=custom_headers,
|
||||
)
|
||||
|
||||
if system_settings.logging_suppress is False:
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from openbb_core.app.logs.logging_service import LoggingService
|
||||
|
||||
ls = LoggingService(system_settings, user_settings)
|
||||
ls.log(
|
||||
user_settings=user_settings,
|
||||
system_settings=system_settings,
|
||||
route=route,
|
||||
func=func,
|
||||
kwargs=kwargs,
|
||||
exec_info=exc_info(),
|
||||
custom_headers=custom_headers,
|
||||
)
|
||||
|
||||
return obbject
|
||||
|
||||
|
||||
@@ -77,6 +77,9 @@ class LoggingService(metaclass=SingletonMeta):
|
||||
user_settings : UserSettings
|
||||
User Settings, by default None
|
||||
"""
|
||||
if system_settings.logging_suppress is True:
|
||||
return
|
||||
|
||||
self._user_settings = user_settings
|
||||
self._system_settings = system_settings
|
||||
self._logging_settings = LoggingSettings(
|
||||
@@ -86,6 +89,8 @@ class LoggingService(metaclass=SingletonMeta):
|
||||
self._handlers_manager = self._setup_handlers()
|
||||
self._log_startup()
|
||||
|
||||
return
|
||||
|
||||
@property
|
||||
def logging_settings(self) -> LoggingSettings:
|
||||
"""Define the Current logging settings.
|
||||
|
||||
@@ -50,7 +50,6 @@ class LoggingSettings:
|
||||
self.python_version: str = system_settings.python_version
|
||||
self.platform_version: str = system_settings.version
|
||||
self.logging_suppress: bool = system_settings.logging_suppress
|
||||
self.log_collect: bool = system_settings.log_collect
|
||||
# User
|
||||
self.user_id: Optional[str] = user_id
|
||||
self.user_logs_directory: Path = get_log_dir(user_data_directory)
|
||||
|
||||
@@ -4,7 +4,6 @@ import importlib
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING, Optional
|
||||
|
||||
from openbb_core.app.logs.utils.utils import get_app_id
|
||||
from openbb_core.env import Env
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -41,20 +40,14 @@ class ChartingSettings:
|
||||
)
|
||||
|
||||
# System
|
||||
self.log_collect: bool = system_settings.log_collect
|
||||
self.logging_suppress: bool = system_settings.logging_suppress
|
||||
self.version: str = system_settings.version
|
||||
self.python_version: str = system_settings.python_version
|
||||
self.test_mode = system_settings.test_mode
|
||||
self.app_id: str = get_app_id(user_data_directory)
|
||||
self.debug_mode: bool = system_settings.debug_mode or Env().DEBUG_MODE
|
||||
self.headless: bool = system_settings.headless
|
||||
# User
|
||||
self.user_email: Optional[str] = getattr(
|
||||
user_settings.profile.hub_session, "email", None
|
||||
)
|
||||
self.user_uuid: Optional[str] = getattr(
|
||||
user_settings.profile.hub_session, "user_uuid", None
|
||||
)
|
||||
self.user_data_directory: str = user_data_directory
|
||||
self.user_exports_directory = user_settings.preferences.export_directory
|
||||
self.user_styles_directory = user_settings.preferences.user_styles_directory
|
||||
# Theme
|
||||
|
||||
@@ -42,8 +42,7 @@ class SystemSettings(Tagged):
|
||||
logging_rolling_clock: bool = False
|
||||
logging_verbosity: int = 20
|
||||
logging_sub_app: Literal["python", "api", "pro", "cli"] = "python"
|
||||
logging_suppress: bool = False
|
||||
log_collect: bool = True
|
||||
logging_suppress: bool = True
|
||||
|
||||
# API section
|
||||
api_settings: APISettings = Field(default_factory=APISettings)
|
||||
|
||||
@@ -15,7 +15,6 @@ class SystemService(metaclass=SingletonMeta):
|
||||
|
||||
SYSTEM_SETTINGS_PATH = SYSTEM_SETTINGS_PATH
|
||||
SYSTEM_SETTINGS_ALLOWED_FIELD_SET = {
|
||||
"log_collect",
|
||||
"test_mode",
|
||||
"headless",
|
||||
"logging_sub_app",
|
||||
|
||||
@@ -53,18 +53,19 @@ class Account: # noqa: D205, D400
|
||||
finally:
|
||||
user_settings = self._base_app._command_runner.user_settings
|
||||
system_settings = self._base_app._command_runner.system_settings
|
||||
ls = LoggingService(
|
||||
user_settings=user_settings, system_settings=system_settings
|
||||
)
|
||||
ls.log(
|
||||
user_settings=user_settings,
|
||||
system_settings=system_settings,
|
||||
# pylint: disable=E1101
|
||||
route=f"/account/{func.__name__}", # type: ignore[attr-defined]
|
||||
func=func, # type: ignore[arg-type]
|
||||
kwargs={}, # don't want any credentials being logged by accident
|
||||
exec_info=exc_info(),
|
||||
)
|
||||
if system_settings.logging_suppress is False:
|
||||
ls = LoggingService(
|
||||
user_settings=user_settings, system_settings=system_settings
|
||||
)
|
||||
ls.log(
|
||||
user_settings=user_settings,
|
||||
system_settings=system_settings,
|
||||
# pylint: disable=E1101
|
||||
route=f"/account/{func.__name__}", # type: ignore[attr-defined]
|
||||
func=func, # type: ignore[arg-type]
|
||||
kwargs={}, # don't want any credentials being logged by accident
|
||||
exec_info=exc_info(),
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
@@ -92,6 +93,7 @@ class Account: # noqa: D205, D400
|
||||
hs.connect(email, password, pat)
|
||||
return hs
|
||||
|
||||
# pylint: disable=R0917
|
||||
@_log_account_command # type: ignore
|
||||
def login(
|
||||
self,
|
||||
|
||||
@@ -40,7 +40,6 @@ def test_handlers_added_correctly():
|
||||
settings = Mock()
|
||||
settings.verbosity = 20
|
||||
settings.handler_list = ["stdout", "stderr", "noop", "file"]
|
||||
settings.log_collect = True
|
||||
settings.logging_suppress = False
|
||||
logger = logging.getLogger("test_handlers_added_correctly")
|
||||
handlers_manager = HandlersManager(logger=logger, settings=settings)
|
||||
|
||||
@@ -16,21 +16,22 @@ from pydantic import BaseModel
|
||||
class MockSystemSettings:
|
||||
"""Mock system settings."""
|
||||
|
||||
logging_suppress: bool = False
|
||||
|
||||
def __init__(self):
|
||||
"""Initialize the mock system settings."""
|
||||
self.logging_suppress = False
|
||||
self.log_collect = True
|
||||
self.custom_attribute = ""
|
||||
|
||||
|
||||
class MockLoggingSettings:
|
||||
"""Mock logging settings."""
|
||||
|
||||
logging_suppress: bool = False
|
||||
|
||||
def __init__(self, system_settings, user_settings):
|
||||
"""Initialize the mock logging settings."""
|
||||
self.system_settings = system_settings
|
||||
self.user_settings = user_settings
|
||||
self.logging_suppress = False
|
||||
self.log_collect = True
|
||||
|
||||
|
||||
class MockOBBject(BaseModel):
|
||||
@@ -63,6 +64,8 @@ def logging_service():
|
||||
user_settings=mock_user_settings,
|
||||
)
|
||||
_logging_service._logger = MagicMock()
|
||||
_logging_service._setup_handlers = MagicMock()
|
||||
_logging_service._handlers_manager = MagicMock()
|
||||
|
||||
return _logging_service
|
||||
|
||||
@@ -94,8 +97,10 @@ def test_correctly_initialized():
|
||||
|
||||
def test_logging_settings_setter(logging_service):
|
||||
"""Test the logging_settings setter."""
|
||||
custom_user_settings = "custom_user_settings"
|
||||
custom_system_settings = "custom_system_settings"
|
||||
custom_user_settings = Mock()
|
||||
custom_user_settings.preferences = "custom_preferences"
|
||||
custom_system_settings = MockSystemSettings()
|
||||
custom_system_settings.custom_attribute = "custom_system_settings"
|
||||
|
||||
with patch(
|
||||
"openbb_core.app.logs.logging_service.LoggingSettings",
|
||||
@@ -106,8 +111,8 @@ def test_logging_settings_setter(logging_service):
|
||||
custom_user_settings,
|
||||
)
|
||||
|
||||
assert logging_service.logging_settings.system_settings == "custom_system_settings" # type: ignore[attr-defined]
|
||||
assert logging_service.logging_settings.user_settings == "custom_user_settings" # type: ignore[attr-defined]
|
||||
assert logging_service.logging_settings.system_settings.custom_attribute == "custom_system_settings" # type: ignore[attr-defined]
|
||||
assert logging_service.logging_settings.user_settings.preferences == "custom_preferences" # type: ignore[attr-defined]
|
||||
|
||||
|
||||
def test_log_startup(logging_service):
|
||||
|
||||
@@ -56,7 +56,7 @@ class MockExecutionContext:
|
||||
@pytest.fixture()
|
||||
def execution_context():
|
||||
"""Set up execution context."""
|
||||
sys = SystemSettings()
|
||||
sys = SystemSettings(logging_suppress=False)
|
||||
user = UserSettings()
|
||||
cmd_map = CommandMap()
|
||||
return MockExecutionContext(cmd_map, "mock/route", sys, user)
|
||||
@@ -76,7 +76,7 @@ def mock_func():
|
||||
|
||||
def test_execution_context():
|
||||
"""Test execution context."""
|
||||
sys = SystemSettings()
|
||||
sys = SystemSettings(logging_suppress=False)
|
||||
user = UserSettings()
|
||||
cmd_map = CommandMap()
|
||||
ctx = ExecutionContext(cmd_map, "mock/route", sys, user)
|
||||
@@ -178,7 +178,7 @@ def test_parameters_builder_merge_args_and_kwargs(
|
||||
[
|
||||
(
|
||||
{"cc": "existing_cc"},
|
||||
SystemSettings(),
|
||||
SystemSettings(logging_suppress=False),
|
||||
UserSettings(),
|
||||
{"cc": "mock_cc"},
|
||||
),
|
||||
@@ -288,7 +288,7 @@ def test_command_runner():
|
||||
|
||||
def test_command_runner_properties():
|
||||
"""Test properties."""
|
||||
sys = SystemSettings()
|
||||
sys = SystemSettings(logging_suppress=False)
|
||||
user = UserSettings()
|
||||
cmd_map = CommandMap()
|
||||
runner = CommandRunner(cmd_map, sys, user)
|
||||
|
||||
@@ -79,7 +79,6 @@ class Backend(PyWry):
|
||||
self.isatty = False
|
||||
|
||||
self.WIDTH, self.HEIGHT = 1400, 762
|
||||
self.logged_in: bool = False
|
||||
|
||||
atexit.register(self.close)
|
||||
|
||||
@@ -142,12 +141,9 @@ class Backend(PyWry):
|
||||
theme: Optional[str] = None,
|
||||
) -> dict:
|
||||
"""Get the json update for the backend."""
|
||||
if self.charting_settings.user_uuid and not self.logged_in:
|
||||
self.logged_in = True
|
||||
|
||||
return dict(
|
||||
theme=theme or self.charting_settings.chart_style,
|
||||
log_id=self.charting_settings.app_id,
|
||||
pywry_version=self.__version__,
|
||||
platform_version=self.charting_settings.version,
|
||||
python_version=self.charting_settings.python_version,
|
||||
|
||||
Reference in New Issue
Block a user