Skip to content

Commit

Permalink
fix(plotly): Use numpy serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
jourdain committed Feb 20, 2022
1 parent b547e52 commit 5f24153
Showing 1 changed file with 7 additions and 28 deletions.
35 changes: 7 additions & 28 deletions trame/html/plotly/__init__.py
@@ -1,38 +1,14 @@
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

# Make sure used module is available
_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):
"""
Expand Down Expand Up @@ -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
pass

0 comments on commit 5f24153

Please sign in to comment.