From 5f24153bf873f9664b7fda5864a97a8eda0f25ef Mon Sep 17 00:00:00 2001 From: Sebastien Jourdain Date: Sun, 20 Feb 2022 11:14:52 -0700 Subject: [PATCH] fix(plotly): Use numpy serializer --- trame/html/plotly/__init__.py | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/trame/html/plotly/__init__.py b/trame/html/plotly/__init__.py index e7becebf..d07fff80 100644 --- a/trame/html/plotly/__init__.py +++ b/trame/html/plotly/__init__.py @@ -1,6 +1,7 @@ -from trame.internal.app import get_app_instance from trame import state from trame.html import AbstractElement +from trame.internal.app import get_app_instance +from trame.internal.utils.numpy import safe_serialization from pywebvue.modules import Plotly @@ -8,31 +9,6 @@ _app = get_app_instance() _app.enable_module(Plotly) -try: - import numpy as np -except: - pass - - -def safe_data(data): - """Replace numpy array to list()""" - result = [] - for item in data: - for name in ["x", "y", "z"]: - if name in item and isinstance(item[name], (np.ndarray, np.generic)): - item[name] = item[name].tolist() - - result.append(item) - - return result - - -def safe_figure(fig): - return { - "data": safe_data(fig["data"]), - "layout": fig["layout"], - } - class Plotly(AbstractElement): """ @@ -104,7 +80,10 @@ def update(self, plotly_fig=None, **kwargs): self.__figure_data = plotly_fig if self.__figure_data: - state[self.__figure_key] = safe_figure(self.__figure_data.to_plotly_json()) + state[self.__figure_key] = safe_serialization( + self.__figure_data.to_plotly_json() + ) + class Figure(Plotly): - pass \ No newline at end of file + pass