[Feature] Extract provider to logs (#6565)

* remove ultima + althub

* move twitter keys

* Extract provider from kwargs and add to logs

* pydocstyle

* update test

* fix tests

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
This commit is contained in:
James Maslek
2024-07-09 08:48:09 -04:00
committed by GitHub
parent 8ac72c6189
commit 7c33152d3c
2 changed files with 19 additions and 3 deletions

View File

@@ -14,9 +14,16 @@ from openbb_core.app.logs.models.logging_settings import LoggingSettings
from openbb_core.app.model.abstract.singleton import SingletonMeta
from openbb_core.app.model.system_settings import SystemSettings
from openbb_core.app.model.user_settings import UserSettings
from pydantic import BaseModel
from pydantic_core import to_jsonable_python
class DummyProvider(BaseModel):
"""Dummy Provider for error handling with logs"""
provider: str = "not_passed_to_kwargs"
class LoggingService(metaclass=SingletonMeta):
"""Logging Manager class responsible for managing logging settings and handling logs.
@@ -221,9 +228,16 @@ class LoggingService(metaclass=SingletonMeta):
# Remove CommandContext if any
kwargs.pop("cc", None)
# Get provider for posthog logs
passed_model = kwargs.get("provider_choices", DummyProvider())
provider = (
passed_model.provider
if hasattr(passed_model, "provider")
else "not_passed_to_kwargs"
)
# Truncate kwargs if too long
kwargs = {k: str(v)[:100] for k, v in kwargs.items()}
# Get execution info
error = None if all(i is None for i in exec_info) else str(exec_info[1])
@@ -234,6 +248,7 @@ class LoggingService(metaclass=SingletonMeta):
"route": route,
"input": kwargs,
"error": error,
"provider": provider,
"custom_headers": custom_headers,
},
default=to_jsonable_python,

View File

@@ -146,7 +146,8 @@ def test_log_startup(logging_service):
{},
(None, None, None),
None,
'CMD: {"route": "mock_route", "input": {}, "error": null, "custom_headers": null}',
'CMD: {"route": "mock_route", "input": {}, "error": null, '
+ '"provider": "not_passed_to_kwargs", "custom_headers": null}',
),
(
"mock_settings",
@@ -160,7 +161,7 @@ def test_log_startup(logging_service):
...,
), # ... is of TracebackType, but unnecessary for the test
{"X-OpenBB-Test": "test"},
'ERROR: {"route": "mock_route", "input": {}, "error": "mock_error", "custom_headers": {"X-OpenBB-Test": "test"}}', # noqa: E501
'ERROR: {"route": "mock_route", "input": {}, "error": "mock_error", "provider": "not_passed_to_kwargs", "custom_headers": {"X-OpenBB-Test": "test"}}', # noqa: E501
),
(
"mock_settings",