Skip to content

Commit e1d07b4

Browse files
Fix docstring for wrap_decentralized_handler
Co-Authored-By: khaleel@reflex.dev <khaleel.aladhami@gmail.com>
1 parent 9cc0ae5 commit e1d07b4

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

reflex/event.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1583,7 +1583,19 @@ def wrap_decentralized_handler(fn: Callable) -> Callable:
15831583
15841584
Returns:
15851585
A wrapped function that can be used with component events.
1586+
1587+
Raises:
1588+
ValueError: If the event handler doesn't have at least one parameter (state).
15861589
"""
1590+
# Get the signature of the function to determine parameter names
1591+
sig = inspect.signature(fn)
1592+
param_names = list(sig.parameters.keys())
1593+
1594+
# The first parameter should be the state parameter
1595+
if not param_names:
1596+
raise ValueError(
1597+
f"Event handler {fn.__name__} must have at least one parameter (state)"
1598+
)
15871599

15881600
# Create a wrapper function that doesn't require the state parameter
15891601
def wrapper(*args, **kwargs):
@@ -1599,12 +1611,22 @@ def wrapper(*args, **kwargs):
15991611
# Create an event spec with the provided arguments
16001612
arg_specs = []
16011613

1614+
# Skip the first parameter (state) when creating arg specs
1615+
param_offset = 1 # Skip the state parameter
1616+
16021617
for i, arg in enumerate(args):
16031618
# Create a var for the arg
16041619
var_arg = Var.create(arg)
16051620

1621+
# Get the parameter name if available, otherwise use a generic name
1622+
param_name = (
1623+
param_names[i + param_offset]
1624+
if i + param_offset < len(param_names)
1625+
else f"arg{i}"
1626+
)
1627+
16061628
# Add the arg to the arg specs
1607-
arg_specs.append((Var.create_safe(f"arg{i}"), var_arg))
1629+
arg_specs.append((Var.create_safe(param_name), var_arg))
16081630

16091631
for name, arg in kwargs.items():
16101632
# Create a var for the arg

0 commit comments

Comments
 (0)