Skip to content

Commit f896a22

Browse files
author
Christopher Doris
committed
pyfunc can now set signature
1 parent f3a4edf commit f896a22

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/jlwrap/callback.jl

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,27 +46,28 @@ end
4646
pyjlcallback(f) = pyjl(pyjlcallbacktype, f)
4747

4848
"""
49-
pyfunc(f; name=nothing, doc=nothing)
49+
pyfunc(f; name=nothing, qualname=name, doc=nothing, signature=nothing)
5050
5151
Wrap the callable `f` as an ordinary Python function.
5252
53-
Its name and docstring can be given with `name` and `doc`.
53+
The name, qualname, docstring or signature can optionally be set with `name`, `qualname`,
54+
`doc` or `signature`.
5455
5556
Unlike `Py(f)` (or `pyjl(f)`), the arguments passed to `f` are always of type `Py`, i.e.
5657
they are never converted.
5758
"""
58-
function pyfunc(f; name=nothing, doc=nothing)
59+
function pyfunc(f; name=nothing, qualname=name, doc=nothing, signature=nothing)
5960
f2 = ispy(f) ? f : pyjlcallback(f)
6061
f3 = pywrapcallback(f2)
6162
pydel!(f2)
62-
if name !== nothing
63-
f3.__name__ = f3.__qualname__ = name
64-
else
65-
f3.__name__ = f3.__qualname__ = "<lambda>"
66-
end
63+
f3.__name__ = name === nothing ? "<lambda>" : name
64+
f3.__qualname__ = name === nothing ? "<lambda>" : qualname
6765
if doc !== nothing
6866
f3.__doc__ = doc
6967
end
68+
if signature !== nothing
69+
f3.__signature__ = signature
70+
end
7071
return f3
7172
end
7273
export pyfunc

0 commit comments

Comments
 (0)