add type conversion for int,float in built-in setters (#1660)

This commit is contained in:
Thomas Brandého 2023-08-23 10:10:51 +02:00 committed by GitHub
parent 6c80a0f1eb
commit 57855f56a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,7 +30,7 @@ from pydantic.fields import ModelField
from reflex import constants from reflex import constants
from reflex.base import Base from reflex.base import Base
from reflex.utils import format, types from reflex.utils import console, format, types
if TYPE_CHECKING: if TYPE_CHECKING:
from reflex.state import State from reflex.state import State
@ -831,7 +831,16 @@ class BaseVar(Var, Base):
state: The state within which we add the setter function. state: The state within which we add the setter function.
value: The value to set. value: The value to set.
""" """
setattr(state, self.name, value) if self.type_ in [int, float]:
try:
value = self.type_(value)
setattr(state, self.name, value)
except ValueError:
console.warn(
f"{self.name}: Failed conversion of {value} to '{self.type_.__name__}'. Value not set.",
)
else:
setattr(state, self.name, value)
setter.__qualname__ = self.get_setter_name() setter.__qualname__ = self.get_setter_name()