瀏覽代碼

Add ComputedVar overloads for BASE_TYPE, SQLA_TYPE, and DATACLASS_TYPE (#4777)

Allow typing to find __getattr__ for rx.var that returns an object-like model.
Masen Furer 3 月之前
父節點
當前提交
5246a6fa79
共有 1 個文件被更改,包括 42 次插入0 次删除
  1. 42 0
      reflex/vars/base.py

+ 42 - 0
reflex/vars/base.py

@@ -2238,6 +2238,27 @@ class ComputedVar(Var[RETURN_TYPE]):
         owner: Type,
         owner: Type,
     ) -> ArrayVar[tuple[LIST_INSIDE, ...]]: ...
     ) -> ArrayVar[tuple[LIST_INSIDE, ...]]: ...
 
 
+    @overload
+    def __get__(
+        self: ComputedVar[BASE_TYPE],
+        instance: None,
+        owner: Type,
+    ) -> ObjectVar[BASE_TYPE]: ...
+
+    @overload
+    def __get__(
+        self: ComputedVar[SQLA_TYPE],
+        instance: None,
+        owner: Type,
+    ) -> ObjectVar[SQLA_TYPE]: ...
+
+    if TYPE_CHECKING:
+
+        @overload
+        def __get__(
+            self: ComputedVar[DATACLASS_TYPE], instance: None, owner: Any
+        ) -> ObjectVar[DATACLASS_TYPE]: ...
+
     @overload
     @overload
     def __get__(self, instance: None, owner: Type) -> ComputedVar[RETURN_TYPE]: ...
     def __get__(self, instance: None, owner: Type) -> ComputedVar[RETURN_TYPE]: ...
 
 
@@ -2484,6 +2505,27 @@ class AsyncComputedVar(ComputedVar[RETURN_TYPE]):
         owner: Type,
         owner: Type,
     ) -> ArrayVar[tuple[LIST_INSIDE, ...]]: ...
     ) -> ArrayVar[tuple[LIST_INSIDE, ...]]: ...
 
 
+    @overload
+    def __get__(
+        self: AsyncComputedVar[BASE_TYPE],
+        instance: None,
+        owner: Type,
+    ) -> ObjectVar[BASE_TYPE]: ...
+
+    @overload
+    def __get__(
+        self: AsyncComputedVar[SQLA_TYPE],
+        instance: None,
+        owner: Type,
+    ) -> ObjectVar[SQLA_TYPE]: ...
+
+    if TYPE_CHECKING:
+
+        @overload
+        def __get__(
+            self: AsyncComputedVar[DATACLASS_TYPE], instance: None, owner: Any
+        ) -> ObjectVar[DATACLASS_TYPE]: ...
+
     @overload
     @overload
     def __get__(self, instance: None, owner: Type) -> AsyncComputedVar[RETURN_TYPE]: ...
     def __get__(self, instance: None, owner: Type) -> AsyncComputedVar[RETURN_TYPE]: ...