Callback triggered by the wrong button

OK Yes I just read on the website that you cannot have the same output on two different callbacks. But a quick follow-on question. Does that mean that no part of a list of outputs can overlap with any other callbacks list of outputs? For instance would this be allowed?

@app.callback([Output('my-out1', 'children'), Output('my-out2', 'children'), Output('my-out3', 'children'], ...)
def callback_1(...):

@app.callback([Output('my-out3', 'children')], ...)
def callback_2(...):

@app.callback([Output('my-out2', 'children'), Output('something-unrelated', 'children')], ...)
def callback_3(..):

Just trying to understand what constraints i have without stumbling around and discovering them by “stubbing my toe” on them!

Yes, that’s exactly what it means :slight_smile:

I made some syntactic sugar to cover up the limitation, if you would like to try it, you can find it here,

Wow that seems to be a huge limitation and I am going to have to go back and look over all my callbacks because I am sure i have lots of problems (at least potentially). Funny thing is I never saw a problem except when i had the exact same list of outputs in two callbacks. Can you give me any ideas on the reason for this and the driving rationale?

Further, if I have a shared state I need to update then I need to update it and I WILL need to output this in multiple callbacks. In my case I am holding a single state_info dictionary in a div tag and using that to hold most everything I need and update it as required in multiple callbacks.

Seems to be pushing me to making only one callback, with all inputs and all outputs being used by it and doing everything there…so much for multithreaded system. Obvious exaggeration but I will have to change my thinking along these lines.