)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d027e64601841b06641553712f9adf444a188cc9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"passed to it to mimic the actual memcache client behavior."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Darrell Bishop developed the patch and Timur Alperovich added the tests"},{"line_number":21,"context_line":"for it."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I4ecfae2bca6ffa08ad15e584579ebce707f4628d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bf659307_1b7f18ac","line":21,"updated":"2018-04-06 06:58:21.000000000","message":"So you could have added the co-author metadata, but what evs :)","commit_id":"8944e9d8bcf52c1365e6c0e63ff8031a4b7dc5ca"}],"swift/common/middleware/tempauth.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8028ce3a03e912d91fab753709688ba23b14c9e9","unresolved":false,"context_lines":[{"line_number":791,"context_line":"            if cached_auth_data:"},{"line_number":792,"context_line":"                expires, old_groups \u003d cached_auth_data"},{"line_number":793,"context_line":"                old_groups \u003d [group.encode(\u0027utf8\u0027)"},{"line_number":794,"context_line":"                              for group in old_groups.split(\u0027,\u0027)]"},{"line_number":795,"context_line":"                new_groups \u003d self._get_user_groups(account, account_user,"},{"line_number":796,"context_line":"                                                   account_id)"},{"line_number":797,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_3309ff30","line":794,"range":{"start_line":794,"start_character":43,"end_line":794,"end_character":53},"updated":"2018-04-05 02:05:47.000000000","message":"I vaguely wonder if we should just encode once, on old_groups... meh.","commit_id":"805867dd0e25914c46a1de01e305b0195f05ef15"}],"test/unit/common/middleware/test_tempauth.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8028ce3a03e912d91fab753709688ba23b14c9e9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"NO_CONTENT_RESP \u003d ((\u0027204 No Content\u0027, {}, \u0027\u0027),)   # mock server response"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FakeMemcache(object):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        self.store \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_539d9308","line":31,"updated":"2018-04-05 02:05:47.000000000","message":"Off-topic: I\u0027m... disheartened... that there are four hits for \u0027class FakeMemcache\u0027 under test/unit/\n\n:-/\n\nOn the plus side (I guess?) one of them is FakeMemcacheReturnsNone which subclasses... one of the others...","commit_id":"805867dd0e25914c46a1de01e305b0195f05ef15"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8028ce3a03e912d91fab753709688ba23b14c9e9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return self.store.get(key)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def set(self, key, value, time\u003d0):"},{"line_number":40,"context_line":"        if type(value) \u003d\u003d tuple:"},{"line_number":41,"context_line":"            decoded \u003d []"},{"line_number":42,"context_line":"            for elem in value:"},{"line_number":43,"context_line":"                if type(elem) \u003d\u003d str:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_f3df07d4","line":40,"range":{"start_line":40,"start_character":11,"end_line":40,"end_character":31},"updated":"2018-04-05 02:05:47.000000000","message":"Seems brittle... Maybe better as\n\n isinstance(value, (tuple, list))\n\nor something, at least?","commit_id":"805867dd0e25914c46a1de01e305b0195f05ef15"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"f2638345fc3820d7d70a0d8f44918a0a4c3423a5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return self.store.get(key)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def set(self, key, value, time\u003d0):"},{"line_number":40,"context_line":"        if type(value) \u003d\u003d tuple:"},{"line_number":41,"context_line":"            decoded \u003d []"},{"line_number":42,"context_line":"            for elem in value:"},{"line_number":43,"context_line":"                if type(elem) \u003d\u003d str:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_c5122bb5","line":40,"range":{"start_line":40,"start_character":11,"end_line":40,"end_character":31},"in_reply_to":"bf659307_f3df07d4","updated":"2018-04-05 17:10:13.000000000","message":"Done","commit_id":"805867dd0e25914c46a1de01e305b0195f05ef15"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8028ce3a03e912d91fab753709688ba23b14c9e9","unresolved":false,"context_lines":[{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        req \u003d self._make_request("},{"line_number":927,"context_line":"            \u0027/auth/v1.0\u0027,"},{"line_number":928,"context_line":"            headers\u003d{\u0027X-Auth-User\u0027: u\u0027t\\u00e9st:t\\u00e9ster\u0027,"},{"line_number":929,"context_line":"                     \u0027X-Auth-Key\u0027: u\u0027p\\u00e1ss\u0027})"},{"line_number":930,"context_line":"        req.environ[\u0027swift.cache\u0027] \u003d memcache"},{"line_number":931,"context_line":"        resp \u003d req.get_response(ath)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_13b07b8b","line":928,"range":{"start_line":928,"start_character":36,"end_line":928,"end_character":37},"updated":"2018-04-05 02:05:47.000000000","message":"...\n\nWhat does the actual env look like? Is the HTTP_X_AUTH_USER value a byte string or unicode string? Judging by https://github.com/openstack/swift/blob/2.17.0/swift/common/swob.py#L254-L255 I suppose it\u0027s a byte string; good.","commit_id":"805867dd0e25914c46a1de01e305b0195f05ef15"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8028ce3a03e912d91fab753709688ba23b14c9e9","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        self.assertEqual(auth_token, resp.headers[\u0027X-Auth-Token\u0027])"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"        req \u003d self._make_request("},{"line_number":945,"context_line":"            u\u0027/v1/AUTH_t\\u00e9st\u0027, headers\u003d{\u0027X-Auth-Token\u0027: auth_token})"},{"line_number":946,"context_line":"        req.environ[\u0027swift.cache\u0027] \u003d memcache"},{"line_number":947,"context_line":"        resp \u003d req.get_response(ath)"},{"line_number":948,"context_line":"        self.assertEqual(204, resp.status_int)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_d3a9a324","line":945,"range":{"start_line":945,"start_character":12,"end_line":945,"end_character":13},"updated":"2018-04-05 02:05:47.000000000","message":"Similar concern here ... we definitely utf-8 encode though: https://github.com/openstack/swift/blob/2.17.0/swift/common/swob.py#L833-L834","commit_id":"805867dd0e25914c46a1de01e305b0195f05ef15"}]}
