From 88e598b15c4282340883703cefc810aae42b6d83 Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Sat, 22 Oct 2022 11:12:15 -0400 Subject: [PATCH] fix: Fix persist on magicgui method decorator (#469) --- magicgui/widgets/_bases/container_widget.py | 7 ++++--- magicgui/widgets/_function_gui.py | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/magicgui/widgets/_bases/container_widget.py b/magicgui/widgets/_bases/container_widget.py index 1500ce417..3f750f57c 100644 --- a/magicgui/widgets/_bases/container_widget.py +++ b/magicgui/widgets/_bases/container_widget.py @@ -74,6 +74,7 @@ def __init__( self._list: list[Widget] = [] self._labels = labels self._layout = layout + self._scrollable = scrollable kwargs.setdefault("backend_kwargs", {}) kwargs["backend_kwargs"].update({"layout": layout, "scrollable": scrollable}) super().__init__(**kwargs) @@ -333,9 +334,9 @@ def _load(self, path, quiet=False): raise for key, val in data.items(): - val = pickle.loads(val) - if val != self.NO_VALUE: - with contextlib.suppress(ValueError, AttributeError): + with contextlib.suppress(ValueError, AttributeError): + val = pickle.loads(val) + if val != self.NO_VALUE: getattr(self, key).value = val diff --git a/magicgui/widgets/_function_gui.py b/magicgui/widgets/_function_gui.py index 9b6e73545..a3a20b394 100644 --- a/magicgui/widgets/_function_gui.py +++ b/magicgui/widgets/_function_gui.py @@ -153,6 +153,7 @@ def __init__( sig = magic_signature(function, gui_options=param_options) self.return_annotation = sig.return_annotation + self._tooltips = tooltips if tooltips: _inject_tooltips_from_docstrings(function.__doc__, sig) @@ -164,7 +165,7 @@ def __init__( # access attributes (like `__name__` that only function objects have). # Mypy doesn't seem catch this at this point: # https://github.com/python/mypy/issues/9934 - name = getattr(function, "__name__", None) + name = name or getattr(function, "__name__", None) if not name: if hasattr(function, "func"): # partials: f = getattr(function, "func", None) @@ -372,6 +373,11 @@ def copy(self) -> FunctionGui: auto_call=self._auto_call, result_widget=bool(self._result_widget), app=None, + persist=self.persist, + visible=self.visible, + tooltips=self._tooltips, + scrollable=self._scrollable, + name=self.name, ) def __get__(self, obj, objtype=None) -> FunctionGui: