smarie/python-pyfields

Capability to register listeners (observers) on read and write

smarie opened this issue · 2 comments

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). Maybe get_observers and set_observers (without the 's' for decorator and corresponding add_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

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.

thanks for the advice ! I did not yet know trio, I'll have a look