MCPcopy Index your code
hub / github.com/reflex-dev/reflex / setup_dynamic_args

Method setup_dynamic_args

reflex/state.py:1350–1405  ·  view source on GitHub ↗

Set up args for easy access in renderer. Args: args: a dict of args

(cls, args: dict[str, str])

Source from the content-addressed store, hash-verified

1348
1349 @classmethod
1350 def setup_dynamic_args(cls, args: dict[str, str]):
1351 """Set up args for easy access in renderer.
1352
1353 Args:
1354 args: a dict of args
1355 """
1356 # Skip dynamic args that have already been registered by a previous route.
1357 args = {
1358 k: v
1359 for k, v in args.items()
1360 if not (
1361 (computed_var := cls.computed_vars.get(k)) is not None
1362 and isinstance(computed_var, DynamicRouteVar)
1363 )
1364 }
1365 if not args:
1366 return
1367
1368 cls._check_overwritten_dynamic_args(list(args.keys()))
1369
1370 def argsingle_factory(param: str):
1371 def inner_func(self: BaseState) -> str:
1372 return self.router._page.params.get(param, "")
1373
1374 inner_func.__name__ = param
1375
1376 return inner_func
1377
1378 def arglist_factory(param: str):
1379 def inner_func(self: BaseState) -> list[str]:
1380 return self.router._page.params.get(param, [])
1381
1382 inner_func.__name__ = param
1383
1384 return inner_func
1385
1386 dynamic_vars = {}
1387 for param, value in args.items():
1388 if value == constants.RouteArgType.SINGLE:
1389 func = argsingle_factory(param)
1390 elif value == constants.RouteArgType.LIST:
1391 func = arglist_factory(param)
1392 else:
1393 continue
1394 dynamic_vars[param] = DynamicRouteVar(
1395 fget=func,
1396 auto_deps=False,
1397 deps=["router"],
1398 _var_data=VarData.from_state(cls, param),
1399 )
1400 setattr(cls, param, dynamic_vars[param])
1401
1402 # Update tracking dicts.
1403 cls.computed_vars.update(dynamic_vars)
1404 cls.vars.update(dynamic_vars)
1405 cls._update_substate_inherited_vars(dynamic_vars)
1406
1407 @classmethod

Callers 1

add_pageMethod · 0.80

Calls 8

DynamicRouteVarClass · 0.90
itemsMethod · 0.80
from_stateMethod · 0.80
getMethod · 0.45
keysMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected