If you know the set of possible keyword argument names accepted by libraryfunc
, you can filter them out of the keyword arguments passed to func
:
function func(; kwargs...)
... do something ...
libraryfunc_kwargs = (`atA`, `atB`, `atC`)
validkwargs = filter(kwargs) do (key, _)
key in libraryfunc_kwargs
end
libraryfunc(; validkwargs...)
end
There you don’t need to know the default values, but still have to define the list of keys accepted by libraryfunc
, in the variable libraryfunc_kwargs
. Instead of writing them manually as in the example above, you can get them with Base.kwarg_decl
, although if libraryfunc
has several methods, you need to choose the one that you mean to call (easier if your function is type-stable).
This would become a bit more complicated if libraryfunc
accepts variable keyword arguments (kwargs...
). But in that case, probably you don’t even have to filter the ones passed to func
.