)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6260d75ffaf71af4c1353059107435d00fc7bc1f","unresolved":true,"context_lines":[{"line_number":7,"context_line":"swob: add a date_header_format helper function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There\u0027s many places where a Last-Modified header value is constructed"},{"line_number":10,"context_line":"from a time value. This patch replaces the duplicate code with a"},{"line_number":11,"context_line":"helper function that returns the correctly formatted header for a"},{"line_number":12,"context_line":"given number of seconds."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"43ceafc7_b9750d47","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":57},"updated":"2025-11-24 21:33:44.000000000","message":"It\u0027s not exactly duplicate (as evidenced by the fact that we can still only call the function once in swob), and I always find the mentality a little funny when the diff comes out -3/+21 -- but I get it and I think it **is** worth doing, especially after looking through the tests. I might do a follow-up or two to see about using it more and doing some other related clean-up.","commit_id":"96e7db0b3ebf81fe49167e52a3f559aca3f2a66d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6260d75ffaf71af4c1353059107435d00fc7bc1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"05cc51a9_ff0e05bd","updated":"2025-11-24 21:33:44.000000000","message":"Pushed up https://review.opendev.org/c/openstack/swift/+/968261 and https://review.opendev.org/c/openstack/swift/+/968262 as follow-ons.","commit_id":"96e7db0b3ebf81fe49167e52a3f559aca3f2a66d"}],"swift/common/swob.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6260d75ffaf71af4c1353059107435d00fc7bc1f","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        pass"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"DATE_HEADER_FORMAT_STRING \u003d \"%a, %d %b %Y %H:%M:%S GMT\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def date_header_format(value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6ab462c7_ce3bef93","line":137,"updated":"2025-11-24 21:33:44.000000000","message":"Looks like this could also be used in object_versioning and (legacy) versioned_writes.","commit_id":"96e7db0b3ebf81fe49167e52a3f559aca3f2a66d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6260d75ffaf71af4c1353059107435d00fc7bc1f","unresolved":true,"context_lines":[{"line_number":137,"context_line":"DATE_HEADER_FORMAT_STRING \u003d \"%a, %d %b %Y %H:%M:%S GMT\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def date_header_format(value):"},{"line_number":141,"context_line":"    \"\"\""},{"line_number":142,"context_line":"    Return a string in the IMF-fixdate format specified by RFC7231 [1] and"},{"line_number":143,"context_line":"    defined in RFC5322 [2], e.g.:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c26e8235_05e72215","line":140,"updated":"2025-11-24 21:33:44.000000000","message":"Could also be used in tempurl.","commit_id":"96e7db0b3ebf81fe49167e52a3f559aca3f2a66d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6260d75ffaf71af4c1353059107435d00fc7bc1f","unresolved":true,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    [1] https://datatracker.ietf.org/doc/html/rfc7231#section-7.1.1.1"},{"line_number":151,"context_line":"    [2] https://datatracker.ietf.org/doc/html/rfc5322"},{"line_number":152,"context_line":"    \"\"\""},{"line_number":153,"context_line":"    return time.strftime(DATE_HEADER_FORMAT_STRING, time.gmtime(value))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9b1a3425_374f62fb","line":152,"updated":"2025-11-24 21:33:44.000000000","message":"Docstring should probably include some expectations around `value`.","commit_id":"96e7db0b3ebf81fe49167e52a3f559aca3f2a66d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6260d75ffaf71af4c1353059107435d00fc7bc1f","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            except Exception:"},{"line_number":173,"context_line":"                return None"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def setter(self, value):"},{"line_number":176,"context_line":"        if isinstance(value, (float, int)):"},{"line_number":177,"context_line":"            self.headers[header] \u003d date_header_format(value)"},{"line_number":178,"context_line":"        elif isinstance(value, datetime):"}],"source_content_type":"text/x-python","patch_set":2,"id":"a93c34fb_efa376a6","line":175,"updated":"2025-11-24 21:33:44.000000000","message":"Huh. Kinda surprised this doesn\u0027t take `Timestamp`s natively... gotta `int()` them manually, I suppose... or no! They all look like `response.last_modified \u003d ts.ceil()`??","commit_id":"96e7db0b3ebf81fe49167e52a3f559aca3f2a66d"}]}
