Prechádzať zdrojové kódy

allow refreshable.refresh() to accept arguments

Falko Schindler 1 rok pred
rodič
commit
5b2de63751
1 zmenil súbory, kde vykonal 9 pridanie a 7 odobranie
  1. 9 7
      nicegui/functions/refreshable.py

+ 9 - 7
nicegui/functions/refreshable.py

@@ -18,21 +18,23 @@ class RefreshableTarget:
     args: Tuple[Any, ...]
     kwargs: Dict[str, Any]
 
-    def run(self, func: Callable[..., Any]) -> Union[None, Awaitable]:
+    def run(self, func: Callable[..., Any], *args: Any, **kwargs: Any) -> Union[None, Awaitable]:
+        args = args or self.args
+        kwargs = kwargs or self.kwargs
         if is_coroutine_function(func):
             async def wait_for_result() -> None:
                 with self.container:
                     if self.instance is None:
-                        await func(*self.args, **self.kwargs)
+                        await func(*args, **kwargs)
                     else:
-                        await func(self.instance, *self.args, **self.kwargs)
+                        await func(self.instance, *args, **kwargs)
             return wait_for_result()
         else:
             with self.container:
                 if self.instance is None:
-                    func(*self.args, **self.kwargs)
+                    func(*args, **kwargs)
                 else:
-                    func(self.instance, *self.args, **self.kwargs)
+                    func(self.instance, *args, **kwargs)
             return None  # required by mypy
 
 
@@ -58,13 +60,13 @@ class refreshable:
         self.targets.append(target)
         return target.run(self.func)
 
-    def refresh(self) -> None:
+    def refresh(self, *args: Any, **kwargs: Any) -> None:
         self.prune()
         for target in self.targets:
             if target.instance != self.instance:
                 continue
             target.container.clear()
-            result = target.run(self.func)
+            result = target.run(self.func, *args, **kwargs)
             if is_coroutine_function(self.func):
                 assert result is not None
                 if globals.loop and globals.loop.is_running():