plotly / dash

Data Apps & Dashboards for Python. No JavaScript Required.
https://plotly.com/dash
MIT License
21.45k stars 2.07k forks source link

Show layout errors in devtools, not just "Error loading layout" #2125

Open leopoldavezacenioka opened 2 years ago

leopoldavezacenioka commented 2 years ago

When using pd.Series with missing values encode as pandas.NA everything run fine however the web page display an error as html code (see img bellow).

I am not sure if this needs a fix I guess u are still waiting to implement support for pandas.NA but it would be helpful to get a python error on execution (which btw is already the case when invoking plotly.Figure show method).

Code to reproduce the bug

import pandas as pd

from plotly.express import line

from dash import Dash, html, dcc

df = pd.DataFrame([[1], [1, 4]], columns=['x', 'y'])
df['y'] = df.y.astype('UInt32')

fig = line(df, x='x',y='y')
fig = dcc.Graph(
    figure= fig
)
app = Dash(__name__)
app.layout = html.Div(children=fig)
app.run(debug=True)

My env

dash                               2.5.1
dash-core-components               2.0.0
dash-html-components               2.0.0
dash-table                         5.0.0
Capture d’écran 2022-07-10 à 16 17 49
alexcjohnson commented 2 years ago

Thanks @leopoldavezacenioka - the underlying issue is tracked here: https://github.com/plotly/plotly.py/issues/3253

I'm going to leave this issue open though, but rename it because really what we should do is show the actual error, rather than just "Error loading layout", when you have debug enabled.

jvbrink commented 2 years ago

[...] what we should do is show the actual error, rather than just "Error loading layout", when you have debug enabled.

As a fairly new Dash user this would be a very helpful change.

I just spent a few hours trying to figure out why my Dash application was giving Error Loading Layout and it turned out a corner case in a tiny method made a bad popup on a single marker, which in turn made the whole app simply give the "Error loading layout" error message, and nothing else. So I had little to go on to try to figure out the error.