[Python-ideas] Syntax for allowing extra keys when unpacking a dict as keyword arguments

Viktor Roytman viktor.roytman at gmail.com
Fri Apr 12 14:46:29 EDT 2019


>
> > Any time I am using a function from a library that accepts keyword 
> > arguments. For example, an ORM model constructor that accepts fields as 
> > keyword arguments (like Django). 
>
> That's not the same issue at all, if I'm understanding you correctly. 
> In any case, surely you need to do some validation on your dictionary of 
> keyword arguments?  Otherwise you are setting yourself up for a world of 
> pain.  If you do that, you should take the opportunity to decide what to 
> do with invalid keys. 
>

The specific pain point that motivated this was constructing many 
interrelated models using a dict. So, for example, if there is a User model 
with a related Address model, and the input is

    user_kwargs = dict(
        name='user',
        age=20,
        address=dict(
            city='city',
            state='ST',
        ),
    )

then passing this information in to the User constructor directly will 
fail, because User.address is a related model, not a simple field.

I agree that most of the time you should want unexpected keyword arguments 
to raise an exception, but in specific circumstances it can be helpful to 
extract only the pieces of a dict that are relevant.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190412/9a6d52fa/attachment.html>


More information about the Python-ideas mailing list