-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Allowing add_on_update_callback to take an only_on_change=True flag would allow us to fan out values to attributes bidirectionally. For example:
attr1 = AttrRW(Bool)
attr2 = AttrRW(Bool)
@dataclass
class AttrGroup:
fan_out_attr: AttrRW
async def __call__(self, value: Any):
await fan_out_attr.update(value)
attr1.add_on_update_callaback(AttrGroup(attr2))
attr2.add_on_update_callaback(AttrGroup(attr1))would re-trigger the callback recursively; but this:
attr1.add_on_update_callaback(AttrGroup(attr2), only_on_change=True)
attr2.add_on_update_callaback(AttrGroup(attr1), only_on_change=True)would not. A use case for this can be found on #133.
Acceptance Criteria
only_on_changeflag implemented onadd_on_update_callback- Test written against new feature
- Tested on fastcs-PandaBlocks capture bits, closing Allow setting an
AttrR/AttrRWwithout running the callbacks added downstream #133
Metadata
Metadata
Assignees
Labels
No labels