)]}'
{"gnocchi/rest/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"682e5dd040c81e4379e56224d95a76b24a53b23a","unresolved":false,"context_lines":[{"line_number":556,"context_line":"    etag, lastmodified \u003d obj.etag, obj.lastmodified"},{"line_number":557,"context_line":"    # NOTE(sileht): Checks and order come from rfc7232"},{"line_number":558,"context_line":"    if pecan.request.if_match:"},{"line_number":559,"context_line":"        if etag not in pecan.request.if_match:"},{"line_number":560,"context_line":"            rest.abort(412)"},{"line_number":561,"context_line":"    elif (pecan.request.if_unmodified_since"},{"line_number":562,"context_line":"            and pecan.request.if_unmodified_since \u003c lastmodified):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_fba26a98","line":559,"updated":"2015-04-09 08:41:33.000000000","message":"I don\u0027t think that support If-Match: *\n\nIsn\u0027t there any lib that can handle that burden for us?","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"35671cb8d0e91daeeed1b481aabf97fedad4d0e1","unresolved":false,"context_lines":[{"line_number":556,"context_line":"    etag, lastmodified \u003d obj.etag, obj.lastmodified"},{"line_number":557,"context_line":"    # NOTE(sileht): Checks and order come from rfc7232"},{"line_number":558,"context_line":"    if pecan.request.if_match:"},{"line_number":559,"context_line":"        if etag not in pecan.request.if_match:"},{"line_number":560,"context_line":"            rest.abort(412)"},{"line_number":561,"context_line":"    elif (pecan.request.if_unmodified_since"},{"line_number":562,"context_line":"            and pecan.request.if_unmodified_since \u003c lastmodified):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_81ae4c7f","line":559,"in_reply_to":"9aa53dc9_fba26a98","updated":"2015-04-09 13:17:24.000000000","message":"This is handled by webob via the \u0027in\u0027","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"682e5dd040c81e4379e56224d95a76b24a53b23a","unresolved":false,"context_lines":[{"line_number":557,"context_line":"    # NOTE(sileht): Checks and order come from rfc7232"},{"line_number":558,"context_line":"    if pecan.request.if_match:"},{"line_number":559,"context_line":"        if etag not in pecan.request.if_match:"},{"line_number":560,"context_line":"            rest.abort(412)"},{"line_number":561,"context_line":"    elif (pecan.request.if_unmodified_since"},{"line_number":562,"context_line":"            and pecan.request.if_unmodified_since \u003c lastmodified):"},{"line_number":563,"context_line":"        rest.abort(412)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_7b965a40","line":560,"updated":"2015-04-09 08:41:33.000000000","message":"rest.abort? why?\n\nBest is to use abort()","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"35671cb8d0e91daeeed1b481aabf97fedad4d0e1","unresolved":false,"context_lines":[{"line_number":557,"context_line":"    # NOTE(sileht): Checks and order come from rfc7232"},{"line_number":558,"context_line":"    if pecan.request.if_match:"},{"line_number":559,"context_line":"        if etag not in pecan.request.if_match:"},{"line_number":560,"context_line":"            rest.abort(412)"},{"line_number":561,"context_line":"    elif (pecan.request.if_unmodified_since"},{"line_number":562,"context_line":"            and pecan.request.if_unmodified_since \u003c lastmodified):"},{"line_number":563,"context_line":"        rest.abort(412)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_81976c39","line":560,"in_reply_to":"9aa53dc9_7b965a40","updated":"2015-04-09 13:17:24.000000000","message":"I have moved back the code from an other file here, and missing to remove that \u0027rest.\u0027. Done","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8a3cd6e6bcc91b8211d42cbf0f9f9a2cd3df1dbe","unresolved":false,"context_lines":[{"line_number":573,"context_line":""},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"def etag_set_headers(obj):"},{"line_number":576,"context_line":"    etag, lastmodified \u003d obj.etag, obj.lastmodified"},{"line_number":577,"context_line":"    pecan.response.etag \u003d etag"},{"line_number":578,"context_line":"    pecan.response.last_modified \u003d lastmodified"},{"line_number":579,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa53dc9_3cb89ac7","line":576,"updated":"2015-04-10 10:38:25.000000000","message":"Is this assignment here relevant? Why not just pecan.response.etag \u003d obj.etag?","commit_id":"937f60cb0726ecbcc51a706b523e7be19fecd4d7"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"ad4eff8da9a5aad69e154f1724d6a4e68b39ca64","unresolved":false,"context_lines":[{"line_number":573,"context_line":""},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"def etag_set_headers(obj):"},{"line_number":576,"context_line":"    etag, lastmodified \u003d obj.etag, obj.lastmodified"},{"line_number":577,"context_line":"    pecan.response.etag \u003d etag"},{"line_number":578,"context_line":"    pecan.response.last_modified \u003d lastmodified"},{"line_number":579,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa53dc9_30843b5c","line":576,"in_reply_to":"9aa53dc9_3a077acb","updated":"2015-04-10 12:40:53.000000000","message":"Done, clearly useless :)","commit_id":"937f60cb0726ecbcc51a706b523e7be19fecd4d7"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"820f633cac1129c7e10f540a2ed7cf993927e2f1","unresolved":false,"context_lines":[{"line_number":573,"context_line":""},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"def etag_set_headers(obj):"},{"line_number":576,"context_line":"    etag, lastmodified \u003d obj.etag, obj.lastmodified"},{"line_number":577,"context_line":"    pecan.response.etag \u003d etag"},{"line_number":578,"context_line":"    pecan.response.last_modified \u003d lastmodified"},{"line_number":579,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa53dc9_3a077acb","line":576,"in_reply_to":"9aa53dc9_3cb89ac7","updated":"2015-04-10 11:44:39.000000000","message":"Yeah sounds like it\u0027ll be simpler ;)","commit_id":"937f60cb0726ecbcc51a706b523e7be19fecd4d7"}],"gnocchi/tests/gabbi/gabbits/history.yaml":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"682e5dd040c81e4379e56224d95a76b24a53b23a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          content-type: application/json"},{"line_number":41,"context_line":"      data:"},{"line_number":42,"context_line":"          user_id: f53c58a4-fdea-4c09-aac4-02135900be67"},{"line_number":43,"context_line":"      status: 200"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    - name: patch resource project_id"},{"line_number":46,"context_line":"      url: /v1/resource/generic/f93450f2-d8a5-4d67-9985-02511241e7d1"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9aa53dc9_5bfcb671","line":43,"updated":"2015-04-09 08:41:33.000000000","message":"Could you at least check a line or two of contents?","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"35671cb8d0e91daeeed1b481aabf97fedad4d0e1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          content-type: application/json"},{"line_number":41,"context_line":"      data:"},{"line_number":42,"context_line":"          user_id: f53c58a4-fdea-4c09-aac4-02135900be67"},{"line_number":43,"context_line":"      status: 200"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    - name: patch resource project_id"},{"line_number":46,"context_line":"      url: /v1/resource/generic/f93450f2-d8a5-4d67-9985-02511241e7d1"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9aa53dc9_81588c8b","line":43,"in_reply_to":"9aa53dc9_5bfcb671","updated":"2015-04-09 13:17:24.000000000","message":"Done","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"}],"gnocchi/tests/test_rest.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"682e5dd040c81e4379e56224d95a76b24a53b23a","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                     headers\u003d{\u0027if-modified-since\u0027: oldlastmodified,"},{"line_number":1438,"context_line":"                              \u0027if-none-match\u0027: etag},"},{"line_number":1439,"context_line":"                     status\u003d304)"},{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"    def test_get_resource_non_admin(self):"},{"line_number":1442,"context_line":"        with self.app.use_another_user():"},{"line_number":1443,"context_line":"            self.app.post_json(\"/v1/resource/\" + self.resource_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_3b38d23c","line":1440,"updated":"2015-04-09 08:41:33.000000000","message":"Missing test case for * obviously :)","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"35671cb8d0e91daeeed1b481aabf97fedad4d0e1","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                     headers\u003d{\u0027if-modified-since\u0027: oldlastmodified,"},{"line_number":1438,"context_line":"                              \u0027if-none-match\u0027: etag},"},{"line_number":1439,"context_line":"                     status\u003d304)"},{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"    def test_get_resource_non_admin(self):"},{"line_number":1442,"context_line":"        with self.app.use_another_user():"},{"line_number":1443,"context_line":"            self.app.post_json(\"/v1/resource/\" + self.resource_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_21266015","line":1440,"in_reply_to":"9aa53dc9_3b38d23c","updated":"2015-04-09 13:17:24.000000000","message":"Done, I have added many other tests too, like behavior with PATCH/DELETE and some mix of headers","commit_id":"c350c910c5f1f7a93d23ec4b58ca34927804d306"}]}
