Initialize an EventHandler for dynamic vars (#808)

This commit is contained in:
Ben Guidarelli 2023-04-25 03:52:52 -04:00 committed by GitHub
parent fc9b03ebd7
commit 65dc2fe80e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -192,7 +192,9 @@ class State(Base, ABC, extra=pydantic.Extra.allow):
events = {
name: fn
for name, fn in cls.__dict__.items()
if not name.startswith("_") and isinstance(fn, Callable)
if not name.startswith("_")
and isinstance(fn, Callable)
and not isinstance(fn, EventHandler)
}
cls.event_handlers = {name: EventHandler(fn=fn) for name, fn in events.items()}
for name, event_handler in cls.event_handlers.items():
@ -364,7 +366,9 @@ class State(Base, ABC, extra=pydantic.Extra.allow):
"""
setter_name = prop.get_setter_name(include_state=False)
if setter_name not in cls.__dict__:
setattr(cls, setter_name, prop.get_setter())
event_handler = EventHandler(fn=prop.get_setter())
cls.event_handlers[setter_name] = event_handler
setattr(cls, setter_name, event_handler)
@classmethod
def _set_default_value(cls, prop: BaseVar):