Capability to register listeners (observers) on read and write
smarie opened this issue · 2 comments
smarie commented
We need to clarify
- the callback signature: probably just
(obj, field)
for get and(obj, field, value, has_changed)
for set. - should the observer be called in the same thread ? probably yes for now. Later we could imagine using
asyncio.loop.call_soon
but that seems overkill for now - should the observer be called after setting the value in case of a set observer ? Maybe better to support (A) generators with a single yield and (B) normal methods, in which case they will be called after* the field is set.
- the name of the option in
field()
and in the associated decorator (like for validators and converters). Maybeget_observers
andset_observers
(without the 's' for decorator and correspondingadd_xxx
method) ?
See https://traitlets.readthedocs.io/en/stable/using_traitlets.html#observe and https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Observer.html
burnpanck commented
Just a few cents on asnycio.loop.call_soon
: There are other event loops out there (I'm a huge fan of trio). It would be great if this feature would play well together with such other loops.
smarie commented
thanks for the advice ! I did not yet know trio
, I'll have a look