)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"9752d78ca79b443d6c6bcbdf6ff2d9fe3446b7cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"54081ab6_2d3eec18","updated":"2025-10-06 05:55:25.000000000","message":"Tests are passing in test_obj.py and swapped around the offset and the uid. That was I think it\u0027ll list better (when there are both), ie order by time then offset then uid.\nBut I think it looks better if we have a variable length component at the end.","commit_id":"babcbb875b2a204781a25e8c2e2f043c342c2636"}],"swift/common/swob.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"066db17f20fdabe9ee10eef3a5288eeb15591016","unresolved":true,"context_lines":[{"line_number":980,"context_line":"        # The container sync feature includes an x-timestamp header with"},{"line_number":981,"context_line":"        # requests. If present this is checked and preserved, otherwise a fresh"},{"line_number":982,"context_line":"        # timestamp is added."},{"line_number":983,"context_line":"        # TODO: should we ensure timestamp always has a uid?"},{"line_number":984,"context_line":"        if \u0027HTTP_X_TIMESTAMP\u0027 in self.environ:"},{"line_number":985,"context_line":"            try:"},{"line_number":986,"context_line":"                self._timestamp \u003d Timestamp(self.environ[\u0027HTTP_X_TIMESTAMP\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"97545243_eaacb61d","line":983,"updated":"2025-10-02 06:26:40.000000000","message":"well yeah... also this ensure_x_timestamp method is only called in the obj controller, yet base controller always makes sure it\u0027s set.. so I did it there in my patch.. but here is probably also good place.","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"}],"swift/common/utils/timestamp.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"066db17f20fdabe9ee10eef3a5288eeb15591016","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"NORMAL_FORMAT \u003d \"%016.05f\""},{"line_number":25,"context_line":"INTERNAL_FORMAT \u003d NORMAL_FORMAT + \u0027~%s_%016x\u0027"},{"line_number":26,"context_line":"WITH_OFFSET_FORMAT \u003d NORMAL_FORMAT + \u0027_%016x\u0027"},{"line_number":27,"context_line":"WITH_UID_FORMAT \u003d NORMAL_FORMAT + \u0027~%s\u0027"},{"line_number":28,"context_line":"SHORT_FORMAT \u003d NORMAL_FORMAT + \u0027_%x\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"6b59b15b_c2acd8c5","line":25,"updated":"2025-10-02 06:26:40.000000000","message":"Because this is set to 16 chars, would it be better if we were to add a uuid, to add it at the end? Then maybe uuid can be variable length, and still list nicely?","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"59bd7f2ae33be2b43f8b8902b455ac6d799ac4f1","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    less than a timestamp with a newer time. The internalized format of a"},{"line_number":63,"context_line":"    timestamp with a uid looks like::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        \"1402464677.04188~\u003cuid\u003e\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    The portion after the tilde is the uid and is an alphanumeric string."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2a5684f4_c39142fa","line":65,"updated":"2025-09-25 15:32:21.000000000","message":"I used \u0027~\u0027 to differentiate when parsing. An alternative would be to use \u0027_\u0027 as per offset and have another way to differentiate offset from uid e.g. uid\u0027s always start with a non-hex-digit character","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"59bd7f2ae33be2b43f8b8902b455ac6d799ac4f1","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    The internalized format of a timestamp with both offset and uid looks"},{"line_number":70,"context_line":"    like::"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"1402464677.04188~\u003cuid\u003e_0000000000000000\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    The internalized form is not exposed to clients in responses from"},{"line_number":75,"context_line":"    Swift.  Normal client operations will not create a timestamp with an"}],"source_content_type":"text/x-python","patch_set":1,"id":"164732c9_64515b0b","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":49},"updated":"2025-09-25 15:32:21.000000000","message":"this may not be the best order i.e. maybe uid should come after offset...needs more thought","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"066db17f20fdabe9ee10eef3a5288eeb15591016","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    The internalized format of a timestamp with both offset and uid looks"},{"line_number":70,"context_line":"    like::"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"1402464677.04188~\u003cuid\u003e_0000000000000000\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    The internalized form is not exposed to clients in responses from"},{"line_number":75,"context_line":"    Swift.  Normal client operations will not create a timestamp with an"}],"source_content_type":"text/x-python","patch_set":1,"id":"898a0ce2_792f2bd7","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":49},"in_reply_to":"164732c9_64515b0b","updated":"2025-10-02 06:26:40.000000000","message":"oh yeah, this is what I was thinking, see comment above.","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"59bd7f2ae33be2b43f8b8902b455ac6d799ac4f1","unresolved":true,"context_lines":[{"line_number":125,"context_line":"            self.offset \u003d getattr(timestamp, \u0027offset\u0027, 0)"},{"line_number":126,"context_line":"            base_uid \u003d getattr(timestamp, \u0027uid\u0027, None)"},{"line_number":127,"context_line":"        # TODO: validate that uid *only* has alphanumeric characters, allow \u0027-\u0027"},{"line_number":128,"context_line":"        #  to support txn id"},{"line_number":129,"context_line":"        self.uid \u003d uid or base_uid or \u0027\u0027"},{"line_number":130,"context_line":"        # increment offset"},{"line_number":131,"context_line":"        if offset \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"e533e3c4_a3b98f24","line":128,"updated":"2025-09-25 15:32:21.000000000","message":"but definitely do not allow _ or ~","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"066db17f20fdabe9ee10eef3a5288eeb15591016","unresolved":true,"context_lines":[{"line_number":125,"context_line":"            self.offset \u003d getattr(timestamp, \u0027offset\u0027, 0)"},{"line_number":126,"context_line":"            base_uid \u003d getattr(timestamp, \u0027uid\u0027, None)"},{"line_number":127,"context_line":"        # TODO: validate that uid *only* has alphanumeric characters, allow \u0027-\u0027"},{"line_number":128,"context_line":"        #  to support txn id"},{"line_number":129,"context_line":"        self.uid \u003d uid or base_uid or \u0027\u0027"},{"line_number":130,"context_line":"        # increment offset"},{"line_number":131,"context_line":"        if offset \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"64f57c79_d2a26be8","line":128,"in_reply_to":"e533e3c4_a3b98f24","updated":"2025-10-02 06:26:40.000000000","message":"you can optionally add a custom suffix to txids so do we need to leave it more custom?","commit_id":"b71c15d493fa8b2c570ab1c4ed43961d469ca93e"}]}
