Currently, unpacking a dict in order to pass its items as keyword arguments
to a function will fail if there are keys present in the dict that are
invalid keyword arguments:

    >>> def func(*, a):
    ...     pass
    ...
    >>> func(**{'a': 1, 'b': 2})
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: func() got an unexpected keyword argument 'b'

The standard approach I have encountered in this scenario is to pass in the
keyword arguments explicitly like so

    func(
        a=kwargs_dict["a"],
        b=kwargs_dict["b"],
        c=kwargs_dict["c"],
    )

But this grows more cumbersome as the number of keyword arguments grows.

There are a number of other workarounds, such as using a dict comprehension
to select only the required keys, but I think it would be more convenient
to have this be a feature of the language. I don't know what a nice syntax
for this would be, or even how feasible it is.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to