Update: version 1.16 has been released since this was posted.
Overview
Dash v1.15.0 is a backwards compatible feature & bug fix release:
- Added support for Dash.jl Julia components
- Simplified callback syntax:
Input
,Output
,State
don’t need to be in lists - Added
parent_style
andparent_className
todcc.Loading
component. - Fixed table regressions with tooltip alignment and copy/paste
Give this a release a try with
pip install dash==1.15.0
and let us know how it goes!
Previous Releases
- đź“Ł Dash v1.14.0 Released - Update the Tab's Title, Removing the "Updating..." Messages, Updated DataTable Link Behavior - #6
- đź“Ł Dash v1.13.4 Release: Fixes regression with loading states from callbacks with multiple outputs
- đź“Ł Dash v1.13.3 Release: Improved performance, clientside callback_context, many dcc.Graph & DataTable bug fixes - #11 by Amazigh
- đź“Ł Dash v1.12.0 Release - Pattern-Matching Callbacks Fixes, Shape-drawing, new DataTable conditional formatting options, prevent_initial_call, and more - #10 by MM-Lehmann
- đź“Ł Dash v1.11.0 Release - Introducing Pattern-Matching Callbacks
- đź“Ł Dash v1.10.0 Release - New dcc.Graph features, updated dcc.Link, React upgrade and bug fixes - #10
- đź“Ł Dash v1.9.0 release - Bug fixes
- đź“Ł Dash v1.8.0 release - dcc.Graph updates, markdown & link support in DataTable, and more - #17 by Jialun
- đź“Ł Dash v1.7.0 released - Async component fixes, inline clientside callbacks, and bug fixes - #15 by Marc-Andre
- đź“Ł Dash 1.6.0 released - dcc.Graph updates, async performance improvements, improved caching - #5 by mbkupfer
In More Detail
Added support for Dash.jl Julia components
We’ve been working on Dash for Julia (Dash.jl) for the last few months. Official documentation is coming soon but for now you can get started by viewing the instructions on the Dash.jl GitHub Repo.
Dash was designed from the start to be a language agnostic framework. The exact same components are written once in JavaScript and can be used in Python, R, or (new!) Julia.
These components are automatically generated from the “prop types” (sort of like a structured docstring) of the declarative JavaScript React components. This component generation happens before a component package is published and is accomplished by running a standard script included in the Dash component boilerplate.
In 1.15.0, running this script will automatically generate the Julia components. As a component author, you don’t need to know Julia nor write any Julia code nor even have Julia installed! The same goes for Dash for R.
We believe that there is a tremendous amount of duplicated effort in the data science libraries across languages. In 2013, we recognized that the web browser (and JavaScript) would become the universal application platform. With the declarative architecture behind plotly.js and Dash, we consolidate our effort into JavaScript and gain the Python, R, and Julia backends “for free”: Write once and generate three interfaces.
If you are a maintainer of a component library, then you’ll need to make the following changes to your package to support Julia:
- Upgrade to dash==1.15.0
- Modify the
build
step withinpackage.json
to include--jl-prefix <component-prefix>
.<component-prefix>
will be the prefix before each component and is used sort of as an alternative to namespaces. For example,dcc.Dropdown
in Python is specified asdcc_dropdown
in Julia. In this case,dcc
is the<component-prefix>
. - Commit the build files to your
master
branch or to a build branch. In our repositories, we publish the build artifacts to themaster
branch while keeping these artifacts out of git in ourdev
branch. In your project, you may just include the artifacts inmaster
and develop off of that branch. - Update the
README.md
, community forum posts, and documentation of your component library to indicate how to install with Julia. When artifacts are published to GitHub, they can be installed directly from the repository. You don’t need to publish to Julia’s package manager. For example, these instructions would look something like (replacing the URL with your component GitHub repo):using Pkg Pkg.add(PackageSpec(url="https://github.com/plotly/dash-table.git", rev="master"))
- Share that you’ve added Julia support to your library as a show-and-tell topic in this community forum
As an example, see these pull requests that added Julia support:
- Julia components by waralex · Pull Request #851 · plotly/dash-core-components · GitHub
- Julia components by waralex · Pull Request #820 · plotly/dash-table · GitHub
- Julia components by waralex · Pull Request #165 · plotly/dash-html-components · GitHub
If you need any help, then reach out to us on the forum or GitHub.
Simplified callback syntax: Input
, Output
, State
don’t need to be in lists
This was a great community PR by @mbegel
: Single input by mbegel · Pull Request #1180 · plotly/dash · GitHub. With this PR, we’ve simplified the app.callback
signature by removing the square brackets & lists.
That is, instead of writing:
@app.callback(Output(...), [Input(...), Input(...)], [State(...), State(...)])
or
@app.callback(
Output(...),
[
Input(...),
Input(...)
],
[
State(...),
State(...)
]
)
you can just write:
@app.callback(Output(...), Input(...), Input(...), State(...), State(...))
or
@app.callback(
Output(...),
Input(...),
Input(...),
State(...),
State(...)
)
The order still matters: Outputs, then Inputs, then State.
Enjoy the simpler syntax!
Added parent_style
and parent_className
to dcc.Loading
component.
This fixes an issue that @jimhendy brought up (thank you! ) in Percentage height of dcc.Loading children - #2 by jimhendy. See the full discussion & investigation in Graph dimension problem with dcc.Loading — regression (?) in DCC 1.9.1 · Issue #831 · plotly/dash-core-components · GitHub.
Fixed table regressions with tooltip alignment and copy/paste
DataTable
tooltips weren’t working with horizontal scroll. This has been fixed in this release.Thanks to @tbillah for raising this issue in DataTable tooltip view appears limited to scope of page only - #3 by chriddyp. This has now been fixed.
Re copy paste: This worked when you used the keyboard to navigate and select cells (shift + arrow keys) but there was a bug when copying & pasting after using the mouse to select cells: shift + click. Special thanks to @geoforce for raising this issue in Copying from datatable - #3 by geoforce.