Dash and Dash-Renderer
Added
- #1103 Pattern-matching IDs and callbacks. Component IDs can be dictionaries, and callbacks can reference patterns of components, using three different wildcards:
ALL
,MATCH
, andALLSMALLER
, available fromdash.dependencies
. This lets you create components on demand, and have callbacks respond to any and all of them. To help with this,dash.callback_context
gets three new entries:outputs_list
,inputs_list
, andstates_list
, which contain all the ids, properties, and except for the outputs, the property values from all matched components. - #1103
dash.testing
option--pause
: after opening the dash app in a test, will invokepdb
for live debugging of both Javascript and Python. Use with a single test case likepytest -k cbwc001 --pause
.
Changed
- #1103 Multiple changes to the callback pipeline:
dash.callback_context.triggered
now does NOT reflect any initial values, and DOES reflect EVERY value which has been changed either by activity in the app or as a result of a previous callback. That means that the initial call of a callback with no prerequisite callbacks will list nothing as triggering. For backward compatibility, we continue to provide a length-1 list fortriggered
, but itsid
andproperty
are blank strings, andbool(triggered)
isFalse
.- A user interaction which returns the same property value as was previously present will not trigger the component to re-render, nor trigger callbacks using that property as an input.
- Callback validation is now mostly done in the browser, rather than in Python. A few things - mostly type validation, like ensuring IDs are strings or dicts and properties are strings - are still done in Python, but most others, like ensuring outputs are unique, inputs and outputs don't overlap, and (if desired) that IDs are present in the layout, are done in the browser. This means you can define callbacks BEFORE the layout and still validate IDs to the layout; and while developing an app, most errors in callback definitions will not halt the app.
Fixed
- #1103 Fixed multiple bugs with chained callbacks either not triggering, inconsistently triggering, or triggering multiple times. This includes: #635, #832, #1053, #1071, and #1084. Also fixed #1105: async components that aren't rendered by the page (for example in a background Tab) would block the app from executing callbacks.
Dash-Core-Components
Changed
- #740 Keep components that are loading in the DOM, but not visible, as opposed to removing them entirely. This will ensure that the size of the component's container does not shrink or expand when the component goes into the loading state.
Fixed
- #740 Fixed bug in which mapbox
uirevision
was not behaving when inside adcc.Loading
component