From 80d3ac613101886e210ee1d6f9d5506cf3a6ae07 Mon Sep 17 00:00:00 2001 From: Henrique Joaquim Date: Fri, 22 Mar 2024 14:22:29 +0000 Subject: [PATCH] [BugFix] No event loop when exporting images (#6249) * duplicated warning * if the event loop was closed - create a new one to process the image --- .../charting/openbb_charting/core/backend.py | 8 +++++++- .../charting/openbb_charting/core/openbb_figure.py | 6 +----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/openbb_platform/obbject_extensions/charting/openbb_charting/core/backend.py b/openbb_platform/obbject_extensions/charting/openbb_charting/core/backend.py index ce8b706f5cc..457df7d5981 100644 --- a/openbb_platform/obbject_extensions/charting/openbb_charting/core/backend.py +++ b/openbb_platform/obbject_extensions/charting/openbb_charting/core/backend.py @@ -152,7 +152,6 @@ class Backend(PyWry): theme: Optional[str] = None, ) -> dict: """Get the json update for the backend.""" - posthog: Dict[str, Any] = dict(collect_logs=self.charting_settings.log_collect) if ( self.charting_settings.log_collect @@ -222,6 +221,11 @@ class Backend(PyWry): self.send_outgoing(outgoing) if export_image and isinstance(export_image, Path): + if self.loop.is_closed(): + # Create a new event loop + self.loop = asyncio.new_event_loop() + asyncio.set_event_loop(self.loop) + self.loop.run_until_complete(self.process_image(export_image)) async def process_image(self, export_image: Path): @@ -507,6 +511,7 @@ if not PLOTLYJS_PATH.exists() and not JUPYTER_NOTEBOOK: def create_backend(charting_settings: Optional["ChartingSettings"] = None): + """Create the backend.""" # # pylint: disable=import-outside-toplevel from openbb_core.app.model.charts.charting_settings import ChartingSettings @@ -517,6 +522,7 @@ def create_backend(charting_settings: Optional["ChartingSettings"] = None): def get_backend() -> Backend: + """Get the backend instance.""" if BACKEND is None: raise ValueError("Backend not created") return BACKEND diff --git a/openbb_platform/obbject_extensions/charting/openbb_charting/core/openbb_figure.py b/openbb_platform/obbject_extensions/charting/openbb_charting/core/openbb_figure.py index 27963e1cd5b..32e5876817f 100644 --- a/openbb_platform/obbject_extensions/charting/openbb_charting/core/openbb_figure.py +++ b/openbb_platform/obbject_extensions/charting/openbb_charting/core/openbb_figure.py @@ -923,11 +923,7 @@ class OpenBBFigure(go.Figure): # If the backend fails, we just show the figure normally # This is a very rare case, but it's better to have a fallback - if getattr(self._charting_settings, "debug_mode", False): - warn(f"Failed to show figure with backend: {e}") - warn( - f"Failed to show figure with backend: {e}" - ) # remove this line when the above lines are figured out + warn(f"Failed to show figure with backend. {e}") # We check if any figures were initialized before the backend failed # If so, we show them with the default plotly backend