From 62d36bfecc59b6223b75063f9eab7ec87b42e400 Mon Sep 17 00:00:00 2001 From: Masen Furer Date: Tue, 19 Dec 2023 15:28:53 -0800 Subject: [PATCH] state: unbreak backend vars This one was really esoteric... if backend vars are used, then a `model_post_init` gets synthesized, and reflex tries to treat that as an event handler... but the args cannot convert correctly, so it raises a validation error when attempting to instantiate the EventSpec (which is also a BaseModel). --- reflex/state.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reflex/state.py b/reflex/state.py index a660f18f4..5570b26a0 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -153,6 +153,10 @@ RESERVED_BACKEND_VAR_NAMES = { "_abc_impl", # pydantic v2 adds this } +SPECIAL_METHODS = { + "model_post_init", # never treat this as an event handler +} + class BaseState(Base, ABC, extra=pydantic.Extra.allow): """The state of the app.""" @@ -358,6 +362,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow): name: fn for name, fn in cls.__dict__.items() if not name.startswith("_") + and name not in SPECIAL_METHODS and isinstance(fn, Callable) and not isinstance(fn, EventHandler) }