)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"b0c25e49da14b4a39acacaa0b350aa6f35c27d7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9aad49e5_14fa332a","updated":"2026-03-02 06:43:04.000000000","message":"The reason this py312 and py313 tests are failing is because NormalTimestamp can\u0027t be converted to an int. Because we don\u0027t call ceil on it like we do for Timestamp class.. obviously something new in more modern python.\n\nThis fixes it:\n\n```\ndiff --git i/swift/common/swob.py w/swift/common/swob.py\nindex f9fc7c422..b04abca36 100644\n--- i/swift/common/swob.py\n+++ w/swift/common/swob.py\n@@ -51,10 +51,11 @@ from io import StringIO\n import urllib\n \n from swift.common.header_key_dict import HeaderKeyDict\n-from swift.common.utils import reiterate, split_path, Timestamp, pairs, \\\n+from swift.common.utils import reiterate, split_path, pairs, \\\n     close_if_possible, closing_if_possible, config_true_value, friendly_close\n from swift.common.exceptions import InvalidTimestamp\n-from swift.common.utils.timestamp import make_timestamp_now, parse_timestamp\n+from swift.common.utils.timestamp import make_timestamp_now, parse_timestamp, \\\n+    Timestamp, BaseTimestamp\n \n RESPONSE_REASONS \u003d {\n     100: (\u0027Continue\u0027, \u0027\u0027),\n@@ -156,7 +157,7 @@ def date_header_format(value):\n     :param value: a Timestamp or numeric epoch\n     :returns: an RFC5322 format HTTP date string.\n     \"\"\"\n-    if isinstance(value, Timestamp):\n+    if isinstance(value, BaseTimestamp):\n         value \u003d value.ceil()\n     return time.strftime(DATE_HEADER_FORMAT_STRING, time.gmtime(value))\n```\n\nInheritance for the win, now we can just isinstance(BaseTimestamp)!","commit_id":"7c24d02e0e2ba050ced0707377d133e8ca8be938"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"fa4eeab49b1e7025525e81f27be5a2507e85dfe0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"11f0995f_5f2a510c","in_reply_to":"9aad49e5_14fa332a","updated":"2026-03-02 12:37:45.000000000","message":"thanks Matt, I will roll that fix into an earlier patch","commit_id":"7c24d02e0e2ba050ced0707377d133e8ca8be938"}]}
