)]}'
{"swift/proxy/controllers/container.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"340b9daa90187a11bd324a69b271fc69e2d819bf","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            if prefix:"},{"line_number":206,"context_line":"                if prefix \u003e shard_range:"},{"line_number":207,"context_line":"                    continue"},{"line_number":208,"context_line":"                try:"},{"line_number":209,"context_line":"                    just_past \u003d prefix[:-1] + chr(ord(prefix[-1]) + 1)"},{"line_number":210,"context_line":"                except ValueError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_b9aecc95","line":207,"updated":"2020-03-02 20:50:51.000000000","message":"this is pretty cool!  I think it\u0027s equivalent to\n\n    shard_range \u003c prefix\n\nin which case the way we define ordering in shard ranges wrt individual strings seems quite reasonable:\n\n     def __lt__(self, other):\n        # a ShardRange is less than other if its entire namespace is less than\n        # other; if other is another ShardRange that implies that this\n        # ShardRange\u0027s upper must be less than or equal to the other\n        # ShardRange\u0027s lower\n        if self.upper \u003d\u003d ShardRange.MAX:\n            return False\n        if isinstance(other, ShardRange):\n            return self.upper \u003c\u003d other.lower\n        elif other is None:\n            return True\n        else:\n            return self.upper \u003c self._encode(other)","commit_id":"09b7ed600bfda6f708db85cd850c0539c3448a0a"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"340b9daa90187a11bd324a69b271fc69e2d819bf","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                    just_past \u003d prefix[:-1] + chr(ord(prefix[-1]) + 1)"},{"line_number":210,"context_line":"                except ValueError:"},{"line_number":211,"context_line":"                    pass"},{"line_number":212,"context_line":"                else:"},{"line_number":213,"context_line":"                    if just_past \u003c shard_range:"},{"line_number":214,"context_line":"                        continue"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_191cc010","line":212,"updated":"2020-03-02 20:50:51.000000000","message":"I don\u0027t understand the ValueError (encoding/chr sort of thing?), but otherwise just_past looks fine\n\n    \u003e\u003e\u003e prefix \u003d \u0027a\u0027\n    \u003e\u003e\u003e prefix[:-1] + chr(ord(prefix[-1]) + 1)\n    \u0027b\u0027\n    \u003e\u003e\u003e prefix \u003d \u0027foo\u0027\n    \u003e\u003e\u003e prefix[:-1] + chr(ord(prefix[-1]) + 1)\n    \u0027fop\u0027\n    \u003e\u003e\u003e prefix \u003d \u0027subdir/\u0027\n    \u003e\u003e\u003e prefix[:-1] + chr(ord(prefix[-1]) + 1)\n    \u0027subdir0\u0027","commit_id":"09b7ed600bfda6f708db85cd850c0539c3448a0a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2be17cdaf60483bf08ffc3e8b9167589f1b9ebad","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                    just_past \u003d prefix[:-1] + chr(ord(prefix[-1]) + 1)"},{"line_number":210,"context_line":"                except ValueError:"},{"line_number":211,"context_line":"                    pass"},{"line_number":212,"context_line":"                else:"},{"line_number":213,"context_line":"                    if just_past \u003c shard_range:"},{"line_number":214,"context_line":"                        continue"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_597798d5","line":212,"in_reply_to":"1fa4df85_191cc010","updated":"2020-03-02 21:00:25.000000000","message":"It seems unlikely to actually happen in practice, but\n\n\u003e\u003e\u003e chr(ord(\u0027\\U0010ffff\u0027) + 1)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nValueError: chr() arg not in range(0x110000)\n\nI think it\u0027d only affect py3? On py2, you can hit\n\n\u003e\u003e\u003e chr(ord(\u0027\\xff\u0027) + 1)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nValueError: chr() arg not in range(256)\n\nbut (I think?) we\u0027d fail that for not being UTF-8 first.","commit_id":"09b7ed600bfda6f708db85cd850c0539c3448a0a"}]}
