)]}'
{"test/functional/test_slo.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3730f75b98022d92591d42e1c70e6d902a8135ed","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    byte_iter \u003d (file_contents[i:i + 1] for i in range(len(file_contents)))"},{"line_number":45,"context_line":"    return ["},{"line_number":46,"context_line":"        (char, sum(1 for _ in grp))"},{"line_number":47,"context_line":"        for char, grp in itertools.groupby(byte_iter)]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class TestSloEnv(BaseEnv):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_7ffde538","line":47,"updated":"2019-05-20 21:36:53.000000000","message":"Should maybe go elsewhere; I know test_symlink (at least) could benefit from this.","commit_id":"6d11616fd14c2fb43b520a8d79f6a382ff6574af"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"19b072970721af5981a83a94f83f1b8f6c4a9c21","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    byte_iter \u003d (file_contents[i:i + 1] for i in range(len(file_contents)))"},{"line_number":45,"context_line":"    return ["},{"line_number":46,"context_line":"        (char, sum(1 for _ in grp))"},{"line_number":47,"context_line":"        for char, grp in itertools.groupby(byte_iter)]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class TestSloEnv(BaseEnv):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_4c060fd1","line":47,"in_reply_to":"7faddb67_11004067","updated":"2019-07-10 16:37:25.000000000","message":"itertools.groupby() is going to preserve byte ordering for us:\n\n \u003e\u003e\u003e group_file_contents(b\u0027xyzzx\u0027)\n [(b\u0027x\u0027, 1), (b\u0027y\u0027, 1), (b\u0027z\u0027, 2), (b\u0027x\u0027, 1)]\n\nMaybe I shoulda named it run_length_encoding or similar? *shrug*\n\n(FWIW, for the longest time I\u0027d get confused and expect groupby to have an implied sort in there.)","commit_id":"6d11616fd14c2fb43b520a8d79f6a382ff6574af"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ff072d19f518475f42e4f3315e189ac41b182fca","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    byte_iter \u003d (file_contents[i:i + 1] for i in range(len(file_contents)))"},{"line_number":45,"context_line":"    return ["},{"line_number":46,"context_line":"        (char, sum(1 for _ in grp))"},{"line_number":47,"context_line":"        for char, grp in itertools.groupby(byte_iter)]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class TestSloEnv(BaseEnv):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_11004067","line":47,"in_reply_to":"bfb3d3c7_7ffde538","updated":"2019-07-10 00:32:31.000000000","message":"Maybe I\u0027m out to lunch here, but I found a different reason not to like this. In the original code, tests were for specific locations in the buffer, like 1024*1024-1 and so on. The new test only counts, but does not care if any chunks were swapped around... e.g. imagine fragment 0 in position 1 and fragment 1 in position 0. Of course this is extremely unlikely, unless someone tries to read from 2 object servers in parallel and then completions race somehow. But still, I feel like we\u0027re letting entropy in.","commit_id":"6d11616fd14c2fb43b520a8d79f6a382ff6574af"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"19b072970721af5981a83a94f83f1b8f6c4a9c21","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            (b\u0027b\u0027, 1),"},{"line_number":403,"context_line":"            (b\u0027c\u0027, 1),"},{"line_number":404,"context_line":"            (b\u0027d\u0027, 1),"},{"line_number":405,"context_line":"        ], group_file_contents(file_item.read()))"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def test_slo_ranged_get(self):"},{"line_number":408,"context_line":"        file_item \u003d self.env.container.file(\u0027manifest-abcde\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_2c13930f","line":405,"updated":"2019-07-10 16:37:25.000000000","message":"You can see it in action with tests like this.","commit_id":"6d11616fd14c2fb43b520a8d79f6a382ff6574af"}]}
