)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fde443de_4007735b","updated":"2026-05-14 15:16:49.000000000","message":"looks pretty ok to me - there\u0027s a couple of things in there that are down right helpful!","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"}],"test/unit/common/utils/test_timestamp.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":345,"context_line":"        self.assertEqual(float(ts_orig), float(ts))"},{"line_number":346,"context_line":"        self.assertNotEqual(ts_orig, ts)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_init_legacy_from_str_v1(self):"},{"line_number":349,"context_line":"        ts \u003d timestamp.Timestamp(\u00271234567890.12345\u0027)"},{"line_number":350,"context_line":"        self.assertEqual(\u00271234567890.12345\u0027, ts.internal)"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2e8bcff8_b12e0cbf","side":"PARENT","line":348,"updated":"2026-05-14 15:16:49.000000000","message":"ok, so the test was re-named","commit_id":"78c1a0586d612c83beca33a69867cf86096c1f19"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":494,"context_line":"        with self.assertRaises(ValueError):"},{"line_number":495,"context_line":"            timestamp.Timestamp(t_str, offset\u003d2 * (16 ** 16))"},{"line_number":496,"context_line":"        # exactly the v1 max offset is fine"},{"line_number":497,"context_line":"        ts \u003d timestamp.Timestamp(t_str, offset\u003d2 * (16 ** 15) - 1)"},{"line_number":498,"context_line":"        self.assertEqual(\u00271417462430.78693_1fffffffffffffff\u0027, ts.internal)"},{"line_number":499,"context_line":"        # relative offsets cannot exceed the v1 max"},{"line_number":500,"context_line":"        with self.assertRaises(ValueError) as cm:"}],"source_content_type":"text/x-python","patch_set":1,"id":"c92a5db8_22ef299a","side":"PARENT","line":497,"updated":"2026-05-14 15:16:49.000000000","message":"huh, the `16 ** 16` vs `16 ** 15` is sort of interesting here!","commit_id":"78c1a0586d612c83beca33a69867cf86096c1f19"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":663,"context_line":"        # unless you start below it"},{"line_number":664,"context_line":"        ts \u003d timestamp.Timestamp(t, offset\u003dv2_max_offset - 1, version\u003d2)"},{"line_number":665,"context_line":"        self.assertEqual(timestamp.Timestamp(ts.internal, offset\u003d1),"},{"line_number":666,"context_line":"                         \u00271417462430.78693_200000000affffff\u0027)"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    @mock_timestamp_randint(0xa)"},{"line_number":669,"context_line":"    def test_offset_setter_v2(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"720024a0_6bfa611e","side":"PARENT","line":666,"updated":"2026-05-14 15:16:49.000000000","message":"i don\u0027t understand the justification for removing these \"can\u0027t offset further; unless you start below it assertions\"\n\n... like I might not have loved them, but once they\u0027re in the codebase i wouldn\u0027t go out of my want to *remove* them unless... are they WRONG or UNHELPFUL in some way?\n\nI\u0027m not sure if this is a \"meh, yagni\" or \"actually, this is bad/dumb\"","commit_id":"78c1a0586d612c83beca33a69867cf86096c1f19"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c0de25cfcdeeaceb49bb1e4b3425fb77217ae5f5","unresolved":true,"context_lines":[{"line_number":663,"context_line":"        # unless you start below it"},{"line_number":664,"context_line":"        ts \u003d timestamp.Timestamp(t, offset\u003dv2_max_offset - 1, version\u003d2)"},{"line_number":665,"context_line":"        self.assertEqual(timestamp.Timestamp(ts.internal, offset\u003d1),"},{"line_number":666,"context_line":"                         \u00271417462430.78693_200000000affffff\u0027)"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    @mock_timestamp_randint(0xa)"},{"line_number":669,"context_line":"    def test_offset_setter_v2(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b0395b94_6fa3c367","side":"PARENT","line":666,"in_reply_to":"720024a0_6bfa611e","updated":"2026-05-15 08:47:23.000000000","message":"These assertions duplicated lines 636 - 644\n\ntest_init_from_str_with_offset_limit_v2 is the appropriate home for them because the constructor is called with a str value. You can\u0027t apply a *relative* offset to a Timestamp being init\u0027d with a float.","commit_id":"78c1a0586d612c83beca33a69867cf86096c1f19"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":277,"context_line":"                        return_value\u003dnow):"},{"line_number":278,"context_line":"            ts \u003d timestamp.Timestamp.now(offset\u003d0xfade)"},{"line_number":279,"context_line":"        self.assertEqual(0xfade, ts.offset)"},{"line_number":280,"context_line":"        exp_float \u003d round(float((int(round(now / 1e-5)) * 1e-5)), 5)"},{"line_number":281,"context_line":"        self.assertEqual(exp_float, float(ts))"},{"line_number":282,"context_line":"        self.assertEqual(\u0027%10.5f\u0027 % exp_float, ts.normal)"},{"line_number":283,"context_line":"        float_part, hex_part \u003d ts.internal.split(\u0027_\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"19fb03cb_dc400a2b","line":280,"updated":"2026-05-14 15:16:49.000000000","message":"ROFL - rly!?","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":294,"context_line":"                ts \u003d timestamp.Timestamp.now(offset\u003d0xfade, version\u003d2)"},{"line_number":295,"context_line":"            self.assertEqual(0xfade, ts.offset)"},{"line_number":296,"context_line":"            self.assertEqual(ts.short, ts.internal)"},{"line_number":297,"context_line":"            exp_float \u003d round(float((int(round(now / 1e-5)) * 1e-5)), 5)"},{"line_number":298,"context_line":"            self.assertEqual(exp_float, float(ts))"},{"line_number":299,"context_line":"            self.assertEqual(\u0027%10.5f\u0027 % exp_float, ts.normal)"},{"line_number":300,"context_line":"            float_part, hex_part \u003d ts.internal.split(\u0027_\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d4c7518_63601f0c","line":297,"updated":"2026-05-14 15:16:49.000000000","message":"oh dang, so it\u0027s like a whole *pattern*","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":352,"context_line":"    def test_init_from_str_v1(self):"},{"line_number":353,"context_line":"        ts \u003d timestamp.Timestamp(\u00271234567890.12345\u0027)"},{"line_number":354,"context_line":"        self.assertEqual(0, ts.offset)"},{"line_number":355,"context_line":"        self.assertEqual(\u00271234567890.12345\u0027, ts.internal)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        ts \u003d timestamp.Timestamp(\u00271234567890.12345_0000000000000abc\u0027)"},{"line_number":358,"context_line":"        self.assertEqual(0xabc, ts.offset)"}],"source_content_type":"text/x-python","patch_set":1,"id":"32cd35f2_24f936ee","line":355,"updated":"2026-05-14 15:16:49.000000000","message":"this got moved to the *top* of init_from_str_v1 (makes sense, why would it have been in v2)","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":355,"context_line":"        self.assertEqual(\u00271234567890.12345\u0027, ts.internal)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        ts \u003d timestamp.Timestamp(\u00271234567890.12345_0000000000000abc\u0027)"},{"line_number":358,"context_line":"        self.assertEqual(0xabc, ts.offset)"},{"line_number":359,"context_line":"        self.assertEqual(\u00271234567890.12345_0000000000000abc\u0027, ts.internal)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"        ts \u003d timestamp.Timestamp(\u00271234567890.12345_1000000000000abc\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"413b020f_18e48a90","line":358,"updated":"2026-05-14 15:16:49.000000000","message":"these assertions on the offset property a new/helpful","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":483,"context_line":"        with self.assertRaises(TypeError):"},{"line_number":484,"context_line":"            timestamp.Timestamp(1417462430.78693, timestamp.Timestamp(1))"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def test_init_from_str_with_offset_limit_v1(self):"},{"line_number":487,"context_line":"        t_str \u003d \u00271417462430.78693\u0027"},{"line_number":488,"context_line":"        v1_max_offset \u003d 0x1fffffffffffffff"},{"line_number":489,"context_line":"        # reject offsets above the v1 max"}],"source_content_type":"text/x-python","patch_set":1,"id":"c3ff0bcd_94edf0fa","line":486,"updated":"2026-05-14 15:16:49.000000000","message":"oic oic, init_from_str vs init_from_float","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b5cb15e0403a78a01dca1f97a8953399a85a8e32","unresolved":true,"context_lines":[{"line_number":629,"context_line":"                         timestamp.Timestamp(ts.internal, offset\u003d1))"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    @mock_timestamp_randint(0xa)"},{"line_number":632,"context_line":"    def test_init_from_float_with_offset_limit_v2(self):"},{"line_number":633,"context_line":"        t \u003d 1417462430.78693"},{"line_number":634,"context_line":"        v2_max_offset \u003d 0xffffff"},{"line_number":635,"context_line":"        # can\u0027t have an offset above the v2 max offset"}],"source_content_type":"text/x-python","patch_set":1,"id":"92e61fc4_9fee7248","line":632,"updated":"2026-05-14 15:16:49.000000000","message":"the v2 tests get the same *which kind* of `__init__` with offset treatment.","commit_id":"c17aee85591032784bf7301502f389cd0b67e854"}]}
