Merge remote-tracking branch 'upstream/main' into hybrid-properties

This commit is contained in:
Benedikt Bartscher 2024-09-11 18:37:52 +02:00
commit a541107416
No known key found for this signature in database
2 changed files with 21 additions and 3 deletions

View File

@ -416,7 +416,7 @@ class ImmutableVar(Var, Generic[VAR_TYPE]):
return ToArrayOperation.create(self, var_type or list)
if issubclass(output, StringVar):
return ToStringOperation.create(self)
return ToStringOperation.create(self, var_type or str)
if issubclass(output, (ObjectVar, Base)):
return ToObjectOperation.create(self, var_type or dict)
@ -496,7 +496,7 @@ class ImmutableVar(Var, Generic[VAR_TYPE]):
if issubclass(fixed_type, (list, tuple, set)):
return self.to(ArrayVar, self._var_type)
if issubclass(fixed_type, str):
return self.to(StringVar)
return self.to(StringVar, self._var_type)
if issubclass(fixed_type, Base):
return self.to(ObjectVar, self._var_type)
return self

View File

@ -1,7 +1,7 @@
import json
import math
import typing
from typing import Dict, List, Set, Tuple, Union
from typing import Dict, List, Optional, Set, Tuple, Union, cast
import pytest
from pandas import DataFrame
@ -1756,3 +1756,21 @@ def test_invalid_computed_var_deps(deps: List):
)
def test_var(state) -> int:
return 1
def test_to_string_operation():
class Email(str): ...
class TestState(BaseState):
optional_email: Optional[Email] = None
email: Email = Email("test@reflex.dev")
assert (
str(TestState.optional_email) == f"{TestState.get_full_name()}.optional_email"
)
my_state = TestState()
assert my_state.optional_email is None
assert my_state.email == "test@reflex.dev"
assert cast(ImmutableVar, TestState.email)._var_type == Email
assert cast(ImmutableVar, TestState.optional_email)._var_type == Optional[Email]