From 2146632e79ba2e0f8f5a3b0775cab2049ea4422a Mon Sep 17 00:00:00 2001 From: Benedikt Bartscher Date: Wed, 4 Dec 2024 22:11:15 +0100 Subject: [PATCH 1/2] feat: allow disabling auto-setters via REFLEX_AUTO_CREATE_SETTERS --- reflex/config.py | 3 +++ reflex/state.py | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/reflex/config.py b/reflex/config.py index 88230cefe..9627efa20 100644 --- a/reflex/config.py +++ b/reflex/config.py @@ -564,6 +564,9 @@ class EnvironmentVariables: # The maximum size of the reflex state in kilobytes. REFLEX_STATE_SIZE_LIMIT: EnvVar[int] = env_var(1000) + # Whether to automatically create setters for state base vars + REFLEX_AUTO_CREATE_SETTERS: EnvVar[bool] = env_var(True) + environment = EnvironmentVariables() diff --git a/reflex/state.py b/reflex/state.py index 55f29cf45..7163fb69a 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -43,7 +43,7 @@ from sqlalchemy.orm import DeclarativeBase from typing_extensions import Self from reflex import event -from reflex.config import PerformanceMode, get_config +from reflex.config import EnvironmentVariables, PerformanceMode, get_config from reflex.istate.data import RouterData from reflex.istate.storage import ClientStorageBase from reflex.model import Model @@ -979,7 +979,8 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow): f'Found var "{prop._js_expr}" with type {prop._var_type}.' ) cls._set_var(prop) - cls._create_setter(prop) + if EnvironmentVariables.REFLEX_AUTO_CREATE_SETTERS.get(): + cls._create_setter(prop) cls._set_default_value(prop) @classmethod From a5ed8d9da90f2c80218693a3cb503d6eb64761fb Mon Sep 17 00:00:00 2001 From: Benedikt Bartscher Date: Wed, 4 Dec 2024 23:54:13 +0100 Subject: [PATCH 2/2] refactor to rx.Config --- reflex/config.py | 6 +++--- reflex/state.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reflex/config.py b/reflex/config.py index 9627efa20..62b185d8a 100644 --- a/reflex/config.py +++ b/reflex/config.py @@ -564,9 +564,6 @@ class EnvironmentVariables: # The maximum size of the reflex state in kilobytes. REFLEX_STATE_SIZE_LIMIT: EnvVar[int] = env_var(1000) - # Whether to automatically create setters for state base vars - REFLEX_AUTO_CREATE_SETTERS: EnvVar[bool] = env_var(True) - environment = EnvironmentVariables() @@ -686,6 +683,9 @@ class Config(Base): # Path to file containing key-values pairs to override in the environment; Dotenv format. env_file: Optional[str] = None + # Whether to automatically create setters for state base vars + state_auto_setters: bool = True + def __init__(self, *args, **kwargs): """Initialize the config values. diff --git a/reflex/state.py b/reflex/state.py index 7163fb69a..592827b49 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -43,7 +43,7 @@ from sqlalchemy.orm import DeclarativeBase from typing_extensions import Self from reflex import event -from reflex.config import EnvironmentVariables, PerformanceMode, get_config +from reflex.config import PerformanceMode, get_config from reflex.istate.data import RouterData from reflex.istate.storage import ClientStorageBase from reflex.model import Model @@ -979,7 +979,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow): f'Found var "{prop._js_expr}" with type {prop._var_type}.' ) cls._set_var(prop) - if EnvironmentVariables.REFLEX_AUTO_CREATE_SETTERS.get(): + if get_config().state_auto_setters: cls._create_setter(prop) cls._set_default_value(prop)