)]}'
{"swift/proxy/controllers/base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"12eb753c5983adff658abb7f13843b195377e953","unresolved":false,"context_lines":[{"line_number":857,"context_line":"                    # we\u0027re done with it"},{"line_number":858,"context_line":"                    raise RangeAlreadyComplete()"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"                if end is not None and (begin \u003e end or end \u003c 0):"},{"line_number":861,"context_line":"                    raise HTTPRequestedRangeNotSatisfiable()"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"            req_range.ranges \u003d [(begin, end)] + req_range.ranges[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_62c3928a","line":860,"range":{"start_line":860,"start_character":55,"end_line":860,"end_character":62},"updated":"2019-02-14 00:18:23.000000000","message":"Can this be true now? We\u0027re no longer adjusting end... so I think we\u0027d trip https://github.com/openstack/swift/blob/2.20.0/swift/common/swob.py#L527-L528 up on L836...","commit_id":"828a241caae0b05fdcd06712244882545e8cfe2c"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"75229c83b84f14d57c4f12b4f3ba62bac0ab0720","unresolved":false,"context_lines":[{"line_number":857,"context_line":"                    # we\u0027re done with it"},{"line_number":858,"context_line":"                    raise RangeAlreadyComplete()"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"                if end is not None and (begin \u003e end or end \u003c 0):"},{"line_number":861,"context_line":"                    raise HTTPRequestedRangeNotSatisfiable()"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"            req_range.ranges \u003d [(begin, end)] + req_range.ranges[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_59ce805a","line":860,"range":{"start_line":860,"start_character":55,"end_line":860,"end_character":62},"in_reply_to":"9fdfeff1_62c3928a","updated":"2019-02-14 02:59:34.000000000","message":"It comes from the user, doesn\u0027t it? Therefore it can contain any garbage, like negative integers... or even floats :-)","commit_id":"828a241caae0b05fdcd06712244882545e8cfe2c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"12eb753c5983adff658abb7f13843b195377e953","unresolved":false,"context_lines":[{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"        try:"},{"line_number":2085,"context_line":"            # We used to let the empty input fall through, where json.loads"},{"line_number":2086,"context_line":"            # threw and error. Unfortunately, on py3 it throws JSONDecodeError"},{"line_number":2087,"context_line":"            # that is a pain to catch. So we emulate py2, simple and works"},{"line_number":2088,"context_line":"            # as long as bodies are not iterators."},{"line_number":2089,"context_line":"            if len(response.body) \u003d\u003d 0:"},{"line_number":2090,"context_line":"                raise ValueError(\u0027No JSON object could be decoded\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_0218861b","line":2087,"range":{"start_line":2086,"start_character":63,"end_line":2087,"end_character":37},"updated":"2019-02-14 00:18:23.000000000","message":"Isn\u0027t it still a ValueError subclass?","commit_id":"828a241caae0b05fdcd06712244882545e8cfe2c"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"75229c83b84f14d57c4f12b4f3ba62bac0ab0720","unresolved":false,"context_lines":[{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"        try:"},{"line_number":2085,"context_line":"            # We used to let the empty input fall through, where json.loads"},{"line_number":2086,"context_line":"            # threw and error. Unfortunately, on py3 it throws JSONDecodeError"},{"line_number":2087,"context_line":"            # that is a pain to catch. So we emulate py2, simple and works"},{"line_number":2088,"context_line":"            # as long as bodies are not iterators."},{"line_number":2089,"context_line":"            if len(response.body) \u003d\u003d 0:"},{"line_number":2090,"context_line":"                raise ValueError(\u0027No JSON object could be decoded\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_d9303059","line":2087,"range":{"start_line":2086,"start_character":63,"end_line":2087,"end_character":37},"in_reply_to":"9fdfeff1_0218861b","updated":"2019-02-14 02:59:34.000000000","message":"I only know that the error text is different.","commit_id":"828a241caae0b05fdcd06712244882545e8cfe2c"}],"test/unit/proxy/controllers/test_base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"12eb753c5983adff658abb7f13843b195377e953","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        if six.PY3:"},{"line_number":382,"context_line":"            self.assertEqual(resp[\u0027versions\u0027], u\u0027\\u1f4a9\u0027)"},{"line_number":383,"context_line":"        else:"},{"line_number":384,"context_line":"            self.assertEqual(resp[\u0027versions\u0027], \"\\xe1\\xbd\\x8a\\x39\")"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_get_container_info_env(self):"},{"line_number":387,"context_line":"        cache_key \u003d get_cache_key(\"account\", \"cont\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_029ba672","line":384,"updated":"2019-02-14 00:18:23.000000000","message":"Right; so, native strings. Seems reasonable.","commit_id":"828a241caae0b05fdcd06712244882545e8cfe2c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"12eb753c5983adff658abb7f13843b195377e953","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"    def test_get_shard_ranges_empty_body(self):"},{"line_number":1121,"context_line":"        error_lines \u003d self._check_get_shard_ranges_bad_data(b\u0027\u0027)"},{"line_number":1122,"context_line":"        self.assertIn(\u0027Problem with listing response\u0027, error_lines[0])"},{"line_number":1123,"context_line":"        self.assertIn(\u0027No JSON\u0027, error_lines[0])"},{"line_number":1124,"context_line":"        self.assertFalse(error_lines[1:])"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"    def test_get_shard_ranges_not_a_list(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_62a07291","line":1123,"range":{"start_line":1123,"start_character":22,"end_line":1123,"end_character":31},"updated":"2019-02-14 00:18:23.000000000","message":"...oh. I see.","commit_id":"828a241caae0b05fdcd06712244882545e8cfe2c"}]}
