Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions packages/reflex-base/src/reflex_base/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,13 @@ def __init__(self, name: str, default: Any, type_: T) -> None:
name: The environment variable name.
default: The default value.
type_: The type of the value.
Raises:
ValueError: If the name is not fully uppercase.
"""
if not name.isupper():
msg = f"Environment variable name must be uppercase: {name!r}"
raise ValueError(msg)
Comment on lines +412 to +414

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Hard break for existing names

When downstream code constructs EnvVar through reflex.config.EnvVar or reflex_base.environment.EnvVar with an existing lowercase or mixed-case name, this unconditional check raises ValueError, causing application initialization or startup to fail without the required deprecation and fallback period.

Context Used: CLAUDE.md (source)

Knowledge Base Used: Config and Environment System

self.name = name
self.default = default
self.type_ = type_
Expand Down
21 changes: 21 additions & 0 deletions tests/units/test_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,27 @@ def test_set_list_value(self):
del os.environ["TEST_VAR"]


@pytest.mark.parametrize("name", ["test_var", "Test_Var", "tEST_VAR", "reflex_use_npm"])
def test_env_var_name_not_uppercase_raises(name):
"""Test that a non-uppercase environment variable name is rejected.

Args:
name: The invalid environment variable name.
"""
with pytest.raises(ValueError, match="must be uppercase"):
EnvVar(name, "default", str)


@pytest.mark.parametrize("name", ["TEST_VAR", "__INTERNAL_VAR", "VAR_2"])
def test_env_var_name_uppercase_accepted(name):
"""Test that fully uppercase environment variable names are accepted.

Args:
name: The valid environment variable name.
"""
assert EnvVar(name, "default", str).name == name


class TestEnvVarDescriptor:
"""Test the env_var descriptor."""

Expand Down
Loading