)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"910b50e0cd45b1413e6167734974f088c9cf2c11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"39b9914c_9664d8ec","updated":"2025-11-24 22:42:38.000000000","message":"Nice, not having to remember to use ceil but instead more use of the Timestamp class that just does the right thing is a win. Nice clean up","commit_id":"0679c3b9327fbec0e3cc14a93d2e54c02d76735a"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"9a5f61238c71355394ae7f73c67dfe7d7f355ae8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cad26d25_01e24a26","updated":"2025-11-24 22:44:02.000000000","message":"just need to fix the unused imports. Otherwise awesome","commit_id":"0679c3b9327fbec0e3cc14a93d2e54c02d76735a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdd17c0a3334d53e2a83fef727e627ab84b1f9e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"123deec8_4b968c60","updated":"2025-11-25 10:27:51.000000000","message":"follow-up: : tests: pass Timestamps to date_header_format  https://review.opendev.org/c/openstack/swift/+/968308","commit_id":"98005fad9297fef279926255976640ead3cc7a93"}],"swift/common/swob.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c5de276ac277111093291f686621afd7f3bcd99","unresolved":true,"context_lines":[{"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":"    Given a Timestamp or numeric epoch, return a string in the IMF-fixdate"},{"line_number":143,"context_line":"    format specified by RFC7231 [1] and defined in RFC5322 [2], e.g.:"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        Sun, 06 Nov 1994 08:49:37 GMT"}],"source_content_type":"text/x-python","patch_set":2,"id":"905ccd96_cf025c60","line":142,"updated":"2025-11-25 10:27:36.000000000","message":"it wouldn\u0027t hurt to call out the use of Timestamp.ceil\n\nsee : tests: pass Timestamps to date_header_format  https://review.opendev.org/c/openstack/swift/+/968308","commit_id":"98005fad9297fef279926255976640ead3cc7a93"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c5de276ac277111093291f686621afd7f3bcd99","unresolved":true,"context_lines":[{"line_number":151,"context_line":"    [2] https://datatracker.ietf.org/doc/html/rfc5322"},{"line_number":152,"context_line":"    \"\"\""},{"line_number":153,"context_line":"    if isinstance(value, Timestamp):"},{"line_number":154,"context_line":"        value \u003d value.ceil()"},{"line_number":155,"context_line":"    return time.strftime(DATE_HEADER_FORMAT_STRING, time.gmtime(value))"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"cbcaba94_a4131299","line":154,"updated":"2025-11-25 10:27:36.000000000","message":"ok, I considered this but shied away from it in order to separate the concerns of constructing the string from what swift considers \"time\" to be. But is *is* very convenient and does encapsulate the choice to use ceil in *one* place, so I\u0027m on board.","commit_id":"98005fad9297fef279926255976640ead3cc7a93"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8ef8b9937d57716ee32ac754a40ad6e490d6eb68","unresolved":true,"context_lines":[{"line_number":151,"context_line":"    [2] https://datatracker.ietf.org/doc/html/rfc5322"},{"line_number":152,"context_line":"    \"\"\""},{"line_number":153,"context_line":"    if isinstance(value, Timestamp):"},{"line_number":154,"context_line":"        value \u003d value.ceil()"},{"line_number":155,"context_line":"    return time.strftime(DATE_HEADER_FORMAT_STRING, time.gmtime(value))"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"702d66e9_4e69c458","line":154,"in_reply_to":"cbcaba94_a4131299","updated":"2025-11-26 04:01:50.000000000","message":"\u003e the choice to use ceil\n\nFWIW, I\u0027m fairly certain this was born out of a concern about us accidentally allowing time to flow backwards. But I don\u0027t remember the exact circumstance.","commit_id":"98005fad9297fef279926255976640ead3cc7a93"}],"test/unit/common/test_swob.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c5de276ac277111093291f686621afd7f3bcd99","unresolved":true,"context_lines":[{"line_number":859,"context_line":"                         swob.date_header_format(1402436408.91203))"},{"line_number":860,"context_line":"        ts \u003d utils.Timestamp(\u00271764019169.37945\u0027)"},{"line_number":861,"context_line":"        self.assertEqual(\u0027Mon, 24 Nov 2025 21:19:30 GMT\u0027,"},{"line_number":862,"context_line":"                         swob.date_header_format(ts))"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def test_bad_range(self):"},{"line_number":865,"context_line":"        req \u003d swob.Request.blank(\u0027/hi/there\u0027, body\u003d\u0027hi\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"67b9339e_1340d3bd","line":862,"updated":"2025-11-25 10:27:36.000000000","message":"nice","commit_id":"98005fad9297fef279926255976640ead3cc7a93"}]}
