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) return ToArrayOperation.create(self, var_type or list)
if issubclass(output, StringVar): if issubclass(output, StringVar):
return ToStringOperation.create(self) return ToStringOperation.create(self, var_type or str)
if issubclass(output, (ObjectVar, Base)): if issubclass(output, (ObjectVar, Base)):
return ToObjectOperation.create(self, var_type or dict) 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)): if issubclass(fixed_type, (list, tuple, set)):
return self.to(ArrayVar, self._var_type) return self.to(ArrayVar, self._var_type)
if issubclass(fixed_type, str): if issubclass(fixed_type, str):
return self.to(StringVar) return self.to(StringVar, self._var_type)
if issubclass(fixed_type, Base): if issubclass(fixed_type, Base):
return self.to(ObjectVar, self._var_type) return self.to(ObjectVar, self._var_type)
return self return self

View File

@ -1,7 +1,7 @@
import json import json
import math import math
import typing import typing
from typing import Dict, List, Set, Tuple, Union from typing import Dict, List, Optional, Set, Tuple, Union, cast
import pytest import pytest
from pandas import DataFrame from pandas import DataFrame
@ -1756,3 +1756,21 @@ def test_invalid_computed_var_deps(deps: List):
) )
def test_var(state) -> int: def test_var(state) -> int:
return 1 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]