📣 Dash 0.39.0 released

Changelogs

dash v0.39.0
dash-renderer v0.20.0
dash-core-components v0.44.0
dash-html-components v0.14.0
dash-table v3.6.0

Highlights

Lots of new features in this new release!

  • Allow multiple outputs from a single callback. #436
  • Support for custom javascript hooks to modify callback payloads and responses. #367
  • Modify the flask response with custom cookies or headers, using dash.callback_context.response . #623
  • Loading states API #267
  • Upgraded plotly.js to 1.45.0 #470
  • Formatting for numbers in dash-table #189

In Depth

Loading States
Multiple Outputs
DataTable Number Formatting

More updates in Dash Club - Dispatch #4: 📣 Dash Club - Dispatch #4 - Latest Dash Developments

Multiple Output !!!
:unicorn::kangaroo::rainbow::tropical_fish::butterfly::mushroom::gift::tada::bomb::boom::notes::hearts::key::radioactive::wc:

I just upgraded to 0.39 (from 0.38rc1) and I’m getting an exception when the site tries to load:


Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.7/site-packages/dash/dash.py", line 570, in index
    pl=plural
dash.exceptions.InvalidIndexException: Missing element new DashRenderer in index.

These are the package versions:

dash==0.39.0
dash-core-components==0.44.0
dash-dangerously-set-inner-html==0.0.2
dash-daq==0.1.4
dash-html-components==0.14.0
dash-renderer==0.20.0
dash-table==3.6.0
grasia-dash-components==0.3.4

Figured out the issue, in case others run into it as well:
Looks like the default app_index string was modified to now include {%renderer%} in the section. Since I was manually setting the index string in my application, the change in the default string was not reflected in my overridden index string therefore causing the exception of “Missing element”.

Awesome ! Thanks for the multiple outputs and the loading component!! It will be very hepful !! Very Good, great work ! :grinning:

Thanks zoohair - just hit the same issue. To make things a bit more explicit, the default app.index_string is now:

<!DOCTYPE html>
<html>
    <head>
        {%metas%}
        <title>{%title%}</title>
        {%favicon%}
        {%css%}
    </head>
    <body>
        {%app_entry%}
        <footer>
            {%config%}
            {%scripts%}
            {%renderer%}
        </footer>
    </body>
</html>

These are great new features (multi output, loading component)! Dash is awesome!

is there a fixed schedule to update the conda-forge ?
conda-forge/dash-feedstock/blob/master/recipe/meta.yaml

thanks @zoohair . You solve my problem.
In my case. I have customed Dash class and override interpolate_index

I should lock the version of Dash now. Thanks again.

Hi Rob,

Is app.index_string necessary to add a favicon? I’m including a favicon.ico in my assets folder at root, but nothing is showing up in my web browser tab, although the default plotly icon is removed.

Alex

Hi @alexrjohnson,

No doubt you’ve already figured it out by now - sorry for taking so long to see this. But for me, our favicons disappeared at some point when we moved to a new version of Dash. To fix it, we ended up with what’s shown below. I’m afraid I can’t remember many more details about it anymore. The below works with dash v39 (excuse some of my application specific code included in the snippet below):

app = dash.Dash(__name__, static_folder='static')
app.config.suppress_callback_exceptions = True

html_head_title = get_config().get('frontend', 'html_head_title', fallback='TRM Dashboard')
stylesheet_href = get_config().get('frontend', 'stylesheet_href', fallback='/assets/dashboard_prod.css')

app.index_string = f'''
<!DOCTYPE html>
<html>
    <head>
        {{%metas%}}
        <title>{html_head_title}</title>
        <link rel="icon" type="image/png" href="/static/favicon.png">
        <link rel="stylesheet" href="{stylesheet_href}">
    </head>
    <body>
        {{%app_entry%}}
        <footer>
            {{%config%}}
            {{%scripts%}}
            {{%renderer%}}
        </footer>
    </body>
</html>
'''

Cheers,
Rob