- #827 Adds support for dashR testing using pytest framework
- Bumped dash-table version from 4.0.2 to 4.1.0
- Bumped dash-core-components version from 1.0.0 to 1.1.0
- Bumped dash-table version from 4.0.1 to 4.0.2
-
💥 #808 Remove strong
dash.testing
dependencies per community feedbacks. Testing users should dopip install dash[testing]
afterwards. -
#805 Add headless mode for dash.testing, add
pytest_setup_options
hook for full configuration ofWebDriver Options
. -
Bumped dash-table version from 4.0.0 to 4.0.1
-
💥 #761 Several breaking changes to the
dash.Dash
API:- Removed two obsolete constructor kwargs:
static_folder
andcomponents_cache_max_age
- Removed the misspelled
supress_callback_exceptions
fallback - Removed the unused
resources.config.infer_from_layout
- Revamped
app.config
: ALL constructor args are now stored inconfig
, with three exceptions:server
,index_string
, andplugins
. None of these are stored in any other instance attributes anymore. - Changed
hot_reload_interval
from msec to seconds, for consistency withhot_reload_watch_interval
- When called from
enable_dev_tools
,debug=True
by default. It's stillFalse
by default fromrun_server
.
- Removed two obsolete constructor kwargs:
-
✨ #744 Dash Testing(
dash.testing
) is introduced, read the full tutorial on http://dash.plot.ly/testing. -
#753
Component
no longer inheritsMutableMapping
, sovalues
,keys
, and more are no longer methods. This fixed an issue reported in dcc where components with certain prop names defined but not provided would cause a failure to render. During component generation we now disallow all props with leading underscores or matching a few remaining reserved words:UNDEFINED
,REQUIRED
,to_plotly_json
,available_properties
, andavailable_wildcard_properties
. -
#739 Allow the Flask app to be provided to Dash after object initialization. This allows users to define Dash layouts etc when using the app factory pattern, or any other pattern that inhibits access to the app object. This broadly complies with the flask extension API, allowing Dash to be considered as a Flask extension where it needs to be.
-
#774 Allow the Flask app to set the Dash app name if the name is not provided by users.
-
#722 Assets are served locally by default. Both JS scripts and CSS files are affected. This improves robustness and flexibility in numerous situations, but in certain cases initial loading could be slowed. To restore the previous CDN serving, set
app.scripts.config.serve_locally = False
(and similarly withapp.css
, but this is generally less important). -
Undo/redo toolbar is removed by default, you can enable it with
app=Dash(show_undo_redo=true)
. The CSS hack._dash-undo-redo:{display:none;}
is no longer needed #724 -
💥#709 Merge the
dash-renderer
project into the main dash repo to simplify feature dev workflow. We will keep the deprecated one for archive purpose.
- Bumped dash-core-components version from 0.47.0 to 0.48.0
- Bumped dash-renderer version from 0.23.0 to 0.24.0
- Bumped dash-table version from 3.6.0 to 3.7.0
- #687 Dev Tools support. A new UI in the application that automatically display JavaScript & Python error messages, validates your component's properties, and displays a graph of your callback's dependencies. Only enabled in debug mode. Turn this on and off with two new config flags in
app.run_server
:dev_tools_props_check
- turn on/off property validation.dev_tools_ui
- turn on/off the UI.
- Support for "Clientside Callbacks" - an escape hatch to execute your callbacks in JavaScript instead of Python #672
- Added
dev_tools_ui
config flag inapp.run_server
(serialized in<script id="_dash-config" type="application/json">
) to display or hide the forthcoming Dev Tools UI in Dash's front-end (dash-renderer). #676 - Partial updates: leave some multi-output updates unchanged while updating others #680
- Bumped dash-core-components version from 0.45.0 to 0.46.0
- Bumped dash-renderer version from 0.21.0 to 0.22.0
- Bumped dash-core-components version from 0.44.0 to 0.45.0
- Bumped dash-html-components version from 0.14.0 to 0.15.0
- Bumped dash-renderer version from 0.20.0 to 0.21.0
- 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
- Bumped dash-core-components version from 0.43.1 to 0.44.0
- Bumped dash-html-components version from 0.13.5 to 0.14.0
- Bumped dash-renderer version from 0.19.0 to 0.20.0
- Bumped dash-table version from 3.5.0 to 3.6.0
- Fix missing indentation for generated metadata.json #600
- Fix missing component prop docstring error #598
- Moved
__repr__
to base component instead of being generated. #492 - Raise exception when same input & output are used in a callback #605
- Added components libraries js/css distribution to hot reload watch. #603
- Callback context #608
- Know which inputs fired in a callback
dash.callback_context.triggered
- Input/State values by name
dash.callback_context.states.get('btn.n_clicks')
- Know which inputs fired in a callback
- Fixed collections.abc deprecation warning for python 3.8 #563
- Added core libraries as version locked dependencies #565
- Bumped dash-table version from 3.3.0 to 3.4.0
- Bumped dash-renderer version from 0.17.0 to 0.18.0
- Bumped dash-core-components version from 0.43.0 to 0.43.1
- Removed support for
Event
system. Use event properties instead, for example then_clicks
property instead of theclick
event, see #531 for details.dash_renderer
MUST be upgraded to >=0.17.0 together with this, and it is recommended to updatedash_core_components
to >=0.43.0 anddash_html_components
to >=0.14.0. #550
- Asset blueprint takes routes prefix into it's static path. #547
- Asset url path no longer strip routes from requests. #547
- Remove print statement from PreventUpdate error handler. #548
- Removed ComponentRegistry dist cache #524
assets_folder
argument now default to 'assets' #547- The assets folder is now always relative to the given root path of
name
argument, the default of__main__
will get thecwd
. #547 - No longer coerce the name argument from the server if the server argument is provided. #547
- Fix typo in some exception names #522
- Always skip
dynamic
resources from index resources collection. #518
- Experimental
--r-prefix
option todash-generate-components
, optionally generates R version of components and corresponding R package. #483
--ignore
option todash-generate-components
, default to^_
. #490
- Added specific Dash exception types to replace generic exceptions (InvalidIndexException, DependencyException, ResourceException) #487
- Fix typo in missing events/inputs error message #485
- Muted dash related missing props docstring from extract-meta warnings #484
- Support for .map file extension and dynamic (on demand) loading #478
- Fix
_imports_.py
indentation generation. #473
- Combined
extract-meta
and python component files generation in a cli #451
- Hot reload from the browser #362
- Silence routes logging with
dev_tools_silence_routes_logging
.
- Added component namespaces registry, collect the resources needed by component library when they are imported instead of crawling the layout. #444
- Component generation now uses the same prop name black list in all supported Python versions. Closes #361. #450
Dash.registered_paths
changed to acollections.defaultdict(set)
, was appending the same package paths on every index. #443
- Replace windows endline when generating the components classes docstring #431
- The
Component.traverse()
andComponent.traverse_with_paths()
methods now work correctly for components withchildren
of typetuple
(before, this only worked forlist
s). #430
- Fix http-equiv typo #418
- Moved
add_url
function definition out ofDash.__init__
#377
- Missing favicon package_data from setup.py #407
- Default favicon for dash apps. #406
- Bust the cache of the assets favicon.
- Remove the first and last blank lines from the HTML index string. #403
- Added support for serving dev bundles from the components suite, enable with
app.run_server(dev_tools_serve_dev_bundles=True)
#369
- Use HTML5 syntax for the meta tag #350
- Added
Cache-Control
headers to files served byDash.serve_component_suites
. #387 - Added time modified query string to collected components suites resources.
- Added
InvalidResourceError
. #393 - Added a flask errorhandler to catch
InvalidResourceError
fromserve_component_suites
and return a 404.
- Fix
get_asset_url
with a differentassets_url_path
. #374
- Set
url_base_pathname
toNone
inDash.__init__
. Fix #364
- Prefix assets files with
requests_pathname_prefix
. #351
Dash.get_asset_url
will give the prefixed url for the asset file.
- Only create the assets blueprint once for app that provide the same flask instance to multiple dash instance. #343
- Fix bug in
_validate_layout
which would not let a user setapp.layout
to be a function that returns a layout (fixes #334). #336
- Added
assets_ignore
init keyword, regex filter for the assets files. #318
- Ensure CSS/JS external resources are loaded before the assets. #335
- Take configs values from init or environ variables (Prefixed with
DASH_
). #322
- Take
requests_pathname_prefix
config when creating scripts tags. requests/routes_pathname_prefix
must starts and end with/
.requests_pathname_prefix
must ends withroutes_pathname_prefix
. If you supplied bothrequests
androutes
pathname before this update, make surerequests_pathname_prefix
ends with the same value asroutes_pathname_prefix
.url_base_pathname
set bothrequests/routes
pathname, cannot supply it with eitherrequests
orroutes
pathname prefixes.
- Disallow duplicate component ids in the initial layout. #320
- Fixed bug in 0.23.1 where importing Dash components with no props would result in an error. (Fixes #321).
- Fixed bug in 0.23.1 where importing components with arguments that are python keywords could cause an error. In particular, this fixes
dash-html-components
while using Python 3.7.
- Add a modified time query string to the assets included in the index in order to bust the cache. #319
- Add ie-compat meta tag to the index by default. #316
- Add
external_script
andexternal_css
keywords to dash__init__
. #305 - Dash components are now generated at build-time and then imported rather than generated when a module is imported. This should reduce the time it takes to import Dash component libraries, and makes Dash compatible with IDEs.
- Raise a more informative error if a non JSON serializable value is returned from a callback #273
- Assets files & index customization #286
- Raise an error if there is no layout present when the server is running #294
aria-*
anddata-*
attributes are now supported in all dash html components. (#40)- These new keywords can be added using a dictionary expansion, e.g.
html.Div(id="my-div", **{"data-toggle": "toggled", "aria-toggled": "true"})
- #207 Dash now supports React components that use Flow.
To support Flow,
component_loader
now has the following behavior to create docstrings as determined in discussion in #187: 1. If a Dash component hasPropTypes
-generated typing, the docstring uses thePropTypes
, regardless of whether the component also has Flow types (current behavior). 2. Otherwise if a Dash component has Flow types but notPropTypes
, the docstring now uses the objects generated byreact-docgen
from the Flow types.
exceptions.PreventUpdate
can be raised inside a callback to elegantly prevent the callback from updating the app. See https://community.plot.ly/t/improving-handling-of-aborted-callbacks/7536/2 for context and #190 for the PR.
- Many pylint style fixes. See #163, #164, #165, #166, #167, #168, #169, #172, #173, #181, #185, #186, #193
- New integration test framework #184
- Submodules are now imported into the
dash
namespace for better IDE completion #174
- 🔒 CSRF protection measures were removed as CSRF style attacks are not relevant
to Dash apps. Dash's API uses
POST
requests with content typeapplication/json
which are not susceptible to unwanted requests from 3rd party sites. See #141 for more. - 🔒 Setting
app.server.secret_key
is no longer required since CSRF protection was removed. Settingapp.server.secret_key
was difficult to document and a very common source of confusion, so it's great that users won't get bitten by this anymore 🎉
app.config
is now adict
instead of a class. You can set config variables withapp.config['suppress_callback_exceptions'] = True
now. The previous class-based syntax (e.g.app.config.suppress_callback_exceptions
) has been maintained for backwards compatibility
- 0.18.2 introduced a bug that removed the ability for dash to serve the app on
any route besides
/
. This has been fixed. - 0.18.0 introduced a bug with the new config variables when used in a multi-app setting. These variables would be shared across apps. This issue has been fixed. Originally reported in https://community.plot.ly/t/flask-endpoint-error/5691/7
- The config setting
supress_callback_exceptions
has been renamed tosuppress_callback_exceptions
. Previously,suppress
was spelled wrong. The original config variable is kept for backwards compatibility.
The prerelease for 0.18.3
- 🔧 Added an
endpoint
to each of the URLs to allow for multiple routes (#70)
- 🐛 If
app.layout
was supplied a function, then it used to be called excessively. Now it is called just once on startup and just once on page load. #128
- 🔒 Removes the
/static/
folder and endpoint that is implicitly initialized by flask. This is too implicit for my comfort level: I worry that users will not be aware that their files in theirstatic
folder are accessible - ⚡️ Removes all API calls to the Plotly API (https://api.plot.ly/), the authentication endpoints and decorators, and the associated
filename
,sharing
andapp_url
arguments. This was never documented or officially supported and authentication has been moved to thedash-auth
package - ✏️ Sorts the prop names in the exception messages (#107)
- 🔧 Add two new
config
variables:routes_pathname_prefix
andrequests_pathname_prefix
to provide more flexibility for API routing when Dash apps are run behind proxy servers.routes_pathname_prefix
is a prefix applied to the backend routes andrequests_pathname_prefix
prefixed in requests made by Dash's front-end.dash-renderer==0.8.0rc3
uses these endpoints. - 🔧 Added id to KeyError exception in components (#112)
- ✏️ Fix a typo in an exception
- 🔧 Replaced all illegal characters in environment variable
##🔧 Maintenance
- 📝 Update README.md
- ✅ Fix CircleCI tests. Note that the
dash-renderer
contains the bulk of the integration tests. - 💄 Flake8 fixes and tests (fixes #99 )
- ✨ Added this CHANGELOG.md
✨ This is the initial open-source release of Dash