Description
Question raised in #480.
unknown=RAISE
may be a nice default in marshmallow but it can be cumbersome to change in webargs.
In practice it is mostly useful in body payload.
I wouldn't use it in query args, for instance, because by construction of the framewok, there may be several layers of decorators adding different fields to parse.
In flask-smorest, I added a doc section to explain it but it is still surprising for the user (see marshmallow-code/flask-smorest#145).
While the base schema is the way to go in marshmallow and is convenient once you are familiar with this logic, it is not practical to with arguments defined with dict2schema
.
I guess in practice, dict2schema
is used mostly for arguments with a few fields (typically query args) while the schema form is adapted to huge schemas (typically json body). Using EXCLUDE
as default would make the dict2field
form work while the user could easily opt-in to RAISE
when using the schema form.
Should we change the default to EXCLUDE
in a major release and let the user opt-in to RAISE
?