diff --git a/src/silx/utils/proxy.py b/src/silx/utils/proxy.py index 04a6a0678f..5d5cebf2c3 100644 --- a/src/silx/utils/proxy.py +++ b/src/silx/utils/proxy.py @@ -182,7 +182,7 @@ def _docstring(dest, origin): except AttributeError: raise ValueError("origin class has no %s method" % dest.__name__) - dest.__doc__ = origin.__doc__ + functools.update_wrapper(dest, origin) return dest diff --git a/src/silx/utils/test/test_proxy.py b/src/silx/utils/test/test_proxy.py index 6855098078..94459f89bf 100644 --- a/src/silx/utils/test/test_proxy.py +++ b/src/silx/utils/test/test_proxy.py @@ -322,3 +322,16 @@ def g(): pass self.assertEqual(f.__doc__, g.__doc__) + + def test_typed_function(self): + def f(a: int) -> float: + """Docstring""" + pass + + @docstring(f) + def g(): + pass + + self.assertEqual(f.__doc__, g.__doc__) + self.assertEqual(g.__annotations__["a"], int) + self.assertEqual(g.__annotations__["return"], float)