✊🏿 Black Lives Matter. Please consider donating to Black Girls Code today.
⚾️ It's finally Baseball season! Root for the home team... & Register for our Sports Analytics Webinar!

Dash-extensions 0.0.45 to 0.0.47 - GroupTransform to MultiplexerTransform and Inputs trigger

Hi,

I have just updated dash-extensions from 0.0.45 to 0.0.47 ,and I noticed a few changes like GroupTransform disappeared to make room for MultiplexerTransform.
After making the adjustment in my app, suddenly at initial load, all the widgets opened at the same time covering the screen. When checking the callbacks, it is as if a user had clicked on all buttons. For instance checking dash.callback_context.triggered shows that all inputs of a callback have been triggered.
Has anyone had similar issues updating dash-extensions?

Are you using the precent initial callbacks flags?

Thanks for the hint! I am not, and was not aware of it. Looking up the doc now and adjusting my app, hopefully that should do it.
It’s about adding prevent_initial_call=True, right?

Yes, if you do it via the Dash (or DashProxy) object, it should affect all callbacks. Did you use it per-callback before?

I did not even use it prior to the update of the extension, so I’m wondering how all the pop ups where not showing up now.

Hmm, that’s a good question. If you didn’t use it at all, I would expect the pop ups to show on init.

I’ll roll back to 0.0.45 and try and reproduce, once I manage not to get them all triggered - it still does now despite my call to the DashProxy :
DashProxy(name, external_stylesheets=[dbc.themes.CERULEAN], title=‘foo’,
transforms=[MultiplexerTransform()], prevent_initial_callbacks=True)

I also encountered a similar problem.

Did the prevent_initial_callback solve your issue? I am still trying to find out why those flags still do not prevent triggers, whereas the flag at the app level prevents some callbacks from triggering.

Interesting. Could you post an MWE? Then I’ll try to figure out what happens and fix it (if it is a bug) in the next release.

Yes, I’ll try and reproduce on a small piece, will update the thread when I have it

I have isolated the behavior. This happens when callbacks share at least one output, i.e. when the MultiplexerTransform comes in I suppose. Then prevent_initial_call=True has no effect. Does this help?

Yes, it does. I probably forgot to pass it on. But I would expect the app keyword to work still. Doesn’t it?

Same thing at the app level with prevent_initial_callbacks, the callbacks sharing are being triggered.

Could you try with the 0.0.49 version? I made a few adjustments

Fantastic, it did work, thanks for the quick response! Will go and have a look at what you changed.

Thanks! For this particular issue, it was because i forgot to set prevent_initial_update=True for the proxy callback. I was made aware by JonasSjostrand. Hence it would be called on app start where the proxy input elements were empty. Which was of course not intended (:

EDIT: I meant prevent_initial_update=True, not prevent_initial_update=False as i first posted

Do you mean forgot to set prevent_initial_update to True ?

Anyways, problem solved, thumbs up!

Ah, yes, of course :wink:

Actually, now I have just noticed going through my app, what used to work in 0.0.47 no longer does in 0.0.49. Specifically, the callbacks that have a dcc.Store as Output, although these components are created before the callbacks are triggered.
“A nonexistent object was used in an Output of a Dash callback.”
Should I create a new issue?