Module Expr Str ImportFrom alias alias ImportFrom alias ClassDef bases AttributeLoad NameLoad attr body FunctionDef arguments args NameParam NameParam defaults Num body If CompareEq NameLoad AttributeLoad AttributeLoad NameLoad attr attr body Return NameLoad Print TupleLoad Str NameLoad NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad Num Return NameLoad decorator_list AttributeLoad NameLoad attr FunctionDef arguments args NameParam NameParam defaults body Print TupleLoad Str NameLoad NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpSub NameLoad Num Return NameLoad decorator_list AttributeLoad NameLoad attr AttributeLoad NameLoad attr ClassDef bases body FunctionDef arguments args NameParam defaults body Print TupleLoad Str NameLoad decorator_list Call AttributeLoad NameLoad attr Str FunctionDef arguments args NameParam NameParam defaults body Assert CompareIsNot NameLoad NameLoad If CompareEq NameLoad AttributeLoad AttributeLoad NameLoad attr attr body Return NameLoad Print TupleLoad Str NameLoad NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad Num Return NameLoad decorator_list AttributeLoad NameLoad attr FunctionDef arguments args NameParam NameParam defaults body Assert CompareIsNot NameLoad NameLoad Print TupleLoad Str NameLoad NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpSub NameLoad Num Return NameLoad decorator_list AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list decorator_list Assign NameStore Call NameLoad
N/A N/A 
Example that shows how two signals that are mutually dependent can 
be kept in sync, and to have this syncing work both in JS and Py. One
examplary use-case is the parent and children signal in flexx.ui.Widget.

Notes:
* The logic to define the relation is implemented both in Python and JS.
* The ``@app.no_sync`` decorator is used to only sync one of the signals
  to avoid a loop.
* In the signal that is synced, we should check whether the value is
  actually changed.

 flexx react app flexx.react undefined Foo N/A N/A app Model N/A spam N/A N/A self v N/A 0 N/A N/A N/A v N/A N/A self spam _value N/A N/A undefined N/A N/A set spam self v N/A N/A N/A N/A self eggs _set N/A v 1 N/A v N/A N/A react input eggs N/A N/A self v N/A N/A N/A N/A set eggs self v N/A N/A N/A N/A self spam _set N/A v 1 N/A v N/A N/A react nosync N/A react input JS N/A N/A _spam_changed N/A N/A v N/A N/A N/A N/A JS detected spam changed to  v N/A N/A N/A react connect spam spam N/A N/A self v N/A N/A N/A N/A v undefined N/A N/A v N/A N/A self spam _value N/A N/A undefined N/A N/A set spam self v N/A N/A N/A N/A self eggs _set N/A v 1 N/A v N/A N/A react input eggs N/A N/A self v N/A N/A N/A N/A v undefined N/A N/A set eggs self v N/A N/A N/A N/A self spam _set N/A v 1 N/A v N/A N/A react nosync N/A react input N/A N/A N/A foo N/A Foo