@@ -584,6 +584,9 @@ def __init_subclass__(cls, mixin: bool = False, **kwargs):
584584 cls .event_handlers [name ] = handler
585585 setattr (cls , name , handler )
586586
587+ # Initialize per-class var dependency tracking.
588+ cls ._computed_var_dependencies = defaultdict (set )
589+ cls ._substate_var_dependencies = defaultdict (set )
587590 cls ._init_var_dependency_dicts ()
588591
589592 @staticmethod
@@ -653,10 +656,6 @@ def _init_var_dependency_dicts(cls):
653656 Additional updates tracking dicts for vars and substates that always
654657 need to be recomputed.
655658 """
656- # Initialize per-class var dependency tracking.
657- cls ._computed_var_dependencies = defaultdict (set )
658- cls ._substate_var_dependencies = defaultdict (set )
659-
660659 inherited_vars = set (cls .inherited_vars ).union (
661660 set (cls .inherited_backend_vars ),
662661 )
@@ -1006,20 +1005,20 @@ def setup_dynamic_args(cls, args: dict[str, str]):
10061005 Args:
10071006 args: a dict of args
10081007 """
1008+ if not args :
1009+ return
10091010
10101011 def argsingle_factory (param ):
1011- @ComputedVar
10121012 def inner_func (self ) -> str :
10131013 return self .router .page .params .get (param , "" )
10141014
1015- return inner_func
1015+ return ComputedVar ( fget = inner_func , cache = True )
10161016
10171017 def arglist_factory (param ):
1018- @ComputedVar
10191018 def inner_func (self ) -> List :
10201019 return self .router .page .params .get (param , [])
10211020
1022- return inner_func
1021+ return ComputedVar ( fget = inner_func , cache = True )
10231022
10241023 for param , value in args .items ():
10251024 if value == constants .RouteArgType .SINGLE :
@@ -1033,8 +1032,8 @@ def inner_func(self) -> List:
10331032 cls .vars [param ] = cls .computed_vars [param ] = func ._var_set_state (cls ) # type: ignore
10341033 setattr (cls , param , func )
10351034
1036- # Reinitialize dependency tracking dicts.
1037- cls ._init_var_dependency_dicts ()
1035+ # Reinitialize dependency tracking dicts.
1036+ cls ._init_var_dependency_dicts ()
10381037
10391038 def __getattribute__ (self , name : str ) -> Any :
10401039 """Get the state var.
@@ -3600,5 +3599,7 @@ def reload_state_module(
36003599 if subclass .__module__ == module and module is not None :
36013600 state .class_subclasses .remove (subclass )
36023601 state ._always_dirty_substates .discard (subclass .get_name ())
3603- state ._init_var_dependency_dicts ()
3602+ state ._computed_var_dependencies = defaultdict (set )
3603+ state ._substate_var_dependencies = defaultdict (set )
3604+ state ._init_var_dependency_dicts ()
36043605 state .get_class_substate .cache_clear ()
0 commit comments