소스 검색

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).
Masen Furer 1 년 전
부모
커밋
62d36bfecc
1개의 변경된 파일5개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      reflex/state.py

+ 5 - 0
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)
         }