)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"66bcade583d10bc30de6d29ea9bc47693d7f52ff","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change extends the resource type patch to"},{"line_number":10,"context_line":"allow to delete attributes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-bugs: #1615077"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iea24c075755a0e75f618ba8498515b2f8baa0a2c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9a89bdaa_f5306558","line":12,"updated":"2016-09-13 13:01:39.000000000","message":"Partial-Bug:","commit_id":"98ab7f98ef0a3b83da4cb6ab7b525a33308ca57c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"766367727330646f32b226000ab2d4ad6d754801","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change extends the resource type patch to"},{"line_number":10,"context_line":"allow to delete attributes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-bugs: #1615077"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iea24c075755a0e75f618ba8498515b2f8baa0a2c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9a89bdaa_abd59ee5","line":12,"in_reply_to":"9a89bdaa_f5306558","updated":"2016-09-13 13:30:21.000000000","message":"Done","commit_id":"98ab7f98ef0a3b83da4cb6ab7b525a33308ca57c"}],"gnocchi/rest/__init__.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6a01ab116e42a64062664b51e67b0a2e985104e9","unresolved":false,"context_lines":[{"line_number":815,"context_line":"        add_attrs \u003d {k: v for k, v in rt_json_next[\"attributes\"].items()"},{"line_number":816,"context_line":"                     if k not in rt_json_current[\"attributes\"]}"},{"line_number":817,"context_line":"        del_attrs \u003d [k for k in rt_json_current[\"attributes\"]"},{"line_number":818,"context_line":"                     if k not in rt_json_next[\"attributes\"]]"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        try:"},{"line_number":821,"context_line":"            add_attrs \u003d schema.attributes_from_dict(add_attrs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_a9d241fe","line":818,"updated":"2016-09-12 15:46:02.000000000","message":"how do we know if add and delete don\u0027t overlap? is that handled by jsonpatch?\n\nmaybe we can add a test for that","commit_id":"98ab7f98ef0a3b83da4cb6ab7b525a33308ca57c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"766367727330646f32b226000ab2d4ad6d754801","unresolved":false,"context_lines":[{"line_number":815,"context_line":"        add_attrs \u003d {k: v for k, v in rt_json_next[\"attributes\"].items()"},{"line_number":816,"context_line":"                     if k not in rt_json_current[\"attributes\"]}"},{"line_number":817,"context_line":"        del_attrs \u003d [k for k in rt_json_current[\"attributes\"]"},{"line_number":818,"context_line":"                     if k not in rt_json_next[\"attributes\"]]"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        try:"},{"line_number":821,"context_line":"            add_attrs \u003d schema.attributes_from_dict(add_attrs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_0bda0a4b","line":818,"in_reply_to":"9a89bdaa_a9d241fe","updated":"2016-09-13 13:30:21.000000000","message":"That depends of the order of the operation:\n\n* add then delete, this is just a noop\n\n* delete then add raise a 400 because you can\u0027t remove something that doesn\u0027t yet exists with jsonpatch\n\nI have added tests for these cases.","commit_id":"98ab7f98ef0a3b83da4cb6ab7b525a33308ca57c"}]}
