diff --git a/reflex/vars/base.py b/reflex/vars/base.py index b9f21c04c..0e6bbaec7 100644 --- a/reflex/vars/base.py +++ b/reflex/vars/base.py @@ -2895,6 +2895,8 @@ def dispatch( V = TypeVar("V") +BASE_TYPE = TypeVar("BASE_TYPE", bound=Base) + class Field(Generic[T]): """Shadow class for Var to allow for type hinting in the IDE.""" @@ -2931,6 +2933,11 @@ class Field(Generic[T]): self: Field[Dict[str, V]], instance: None, owner ) -> ObjectVar[Dict[str, V]]: ... + @overload + def __get__( + self: Field[BASE_TYPE], instance: None, owner + ) -> ObjectVar[BASE_TYPE]: ... + @overload def __get__(self, instance: None, owner) -> Var[T]: ... diff --git a/tests/units/vars/test_object.py b/tests/units/vars/test_object.py index 60dffd7e3..1b156229f 100644 --- a/tests/units/vars/test_object.py +++ b/tests/units/vars/test_object.py @@ -101,12 +101,6 @@ def test_typing() -> None: var = ObjectState.bare.to(ObjectVar) _ = assert_type(var, ObjectVar[Bare]) - var = ObjectState.base.to(ObjectVar, Base) - _ = assert_type(var, ObjectVar[Base]) - # Base - var = ObjectState.base.to(ObjectVar) - _ = assert_type(var, ObjectVar[Base]) - - var = ObjectState.base.to(LiteralObjectVar, Base) + var = ObjectState.base _ = assert_type(var, ObjectVar[Base])