Created by: rienafairefr
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
and./bin/security/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. -
Filed the PR against the correct branch: master
,3.3.x
,4.0.x
. Default:master
. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language. @taxpon @frol @mbohlool @cbornet @kenjones-cisco
Description of the PR
I found myself trying to compare a model representation with its representation on the API side, and the to_dict method was returning the model dict with the modified (snake_case) attributes instead of the original attributes that the API internally used. I added a mapped_attributes
argument to the to_dict method,
Which means:
> # incoming API JSON representation
> incoming = {"BasicProperty": "stuff"}
> # python model (if model casing is set to snakecase)
> model = {"basic_property": "stuff"}
> model.to_dict()
{"basic_property": "stuff"}
> model.to_dict(mapped_attributes=True)
{"BasicProperty": "stuff"}
> assert incoming == model.to_dict(mapped_attributes)
Seems backward compatible to me, although it might fail if a model has an attribute value's class that implements a to_dict method without the mapped_attributes parameter (mixed-version generation maybe ? )