)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"df0662e6e1ca5b6d03b04d875d2a6f459d702dab","unresolved":false,"context_lines":[{"line_number":11,"context_line":"considered dangerous."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This changes the json serialization code to embed the timezone in the"},{"line_number":14,"context_line":"encoded datetime string."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I262391987d25b483d2bec4ac3abe94b6e9d032ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a0c5dc1_c824d9b0","line":14,"updated":"2015-05-12 12:34:30.000000000","message":"Can it break applications unable to parse the timezone? Do you know which function is used to parse timezones in applications?","commit_id":"00ba2f4098e63cab4406ac8d64df9a16fa8b69a4"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"b36783cc8687258e20fe58ef5f57e97da8c54605","unresolved":false,"context_lines":[{"line_number":11,"context_line":"considered dangerous."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This changes the json serialization code to embed the timezone in the"},{"line_number":14,"context_line":"encoded datetime string."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I262391987d25b483d2bec4ac3abe94b6e9d032ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a0c5dc1_c83f39d5","line":14,"in_reply_to":"9a0c5dc1_c81059ab","updated":"2015-05-12 12:49:58.000000000","message":"IMO isotime() is wrong, it adds \u0027Z\u0027 for unaware datetime objects (objects without timezone information). It would be safer to replace strtime(t) with t.isoformat(): the isoformat() adds the timezone information as \"+HH:HH\" format, but only if the information is available. It reduces the risk of breaking the backward compatibility.","commit_id":"00ba2f4098e63cab4406ac8d64df9a16fa8b69a4"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"acb4f563bb1556cf404012a16adc94298db91a2a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"considered dangerous."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This changes the json serialization code to embed the timezone in the"},{"line_number":14,"context_line":"encoded datetime string."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I262391987d25b483d2bec4ac3abe94b6e9d032ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a0c5dc1_c81059ab","line":14,"in_reply_to":"9a0c5dc1_c824d9b0","updated":"2015-05-12 12:45:42.000000000","message":"That depends on application and on the language they use. They should use parse_isotime().","commit_id":"00ba2f4098e63cab4406ac8d64df9a16fa8b69a4"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"786158ab1bd424a4d11706f8429bf8fcfa44bee7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julien Danjou \u003cjulien@danjou.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-13 11:53:31 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"jsonutils: replace strtime() usage with isotime()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Following discussion in change I8b5119e64369ccac3423dccc04421f99912df733"},{"line_number":10,"context_line":"in oslo.utils, we plan to deprecated and remove strtime() which is to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a0c5dc1_1551bc0e","line":7,"updated":"2015-05-13 10:10:10.000000000","message":"the title is very confusing since you replace strtime() with isoformat(), not with isotime() :-p","commit_id":"553d6f6ea146866baf3e0fca6cadaae2c7f30a1b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b8f9c644a75710c4c0f002106b497382015f3933","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julien Danjou \u003cjulien@danjou.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-13 11:53:31 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"jsonutils: replace strtime() usage with isotime()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Following discussion in change I8b5119e64369ccac3423dccc04421f99912df733"},{"line_number":10,"context_line":"in oslo.utils, we plan to deprecated and remove strtime() which is to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a0c5dc1_756358dd","line":7,"in_reply_to":"9a0c5dc1_1551bc0e","updated":"2015-05-13 10:10:56.000000000","message":"right!","commit_id":"553d6f6ea146866baf3e0fca6cadaae2c7f30a1b"}],"oslo_serialization/jsonutils.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"522f8fcac4180fd200606cfd7a0c9c7ddce93ec8","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            value \u003d datetime.datetime(*tuple(value.timetuple())[:6])"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if convert_datetime and isinstance(value, datetime.datetime):"},{"line_number":148,"context_line":"            return value.isoformat(value)"},{"line_number":149,"context_line":"        elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":150,"context_line":"            return recursive(dict(value.iteritems()), level\u003dlevel + 1)"},{"line_number":151,"context_line":"        elif hasattr(value, \u0027__iter__\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_b23b26d1","line":148,"updated":"2015-05-13 09:49:31.000000000","message":"Typo: you should write value.isoformat().\n\nisoformat() takes an optional separator parameter which is supposed to be character, not a datetime object. Strange that no type error is raised here :-p","commit_id":"900c81a905b38eb1f2b0e58e158805354eacfb60"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"8ef27a7afeff1287a9a343819ef01d93c543b0b6","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            value \u003d datetime.datetime(*tuple(value.timetuple())[:6])"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if convert_datetime and isinstance(value, datetime.datetime):"},{"line_number":148,"context_line":"            return value.isoformat(value)"},{"line_number":149,"context_line":"        elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":150,"context_line":"            return recursive(dict(value.iteritems()), level\u003dlevel + 1)"},{"line_number":151,"context_line":"        elif hasattr(value, \u0027__iter__\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_72bfeefb","line":148,"in_reply_to":"9a0c5dc1_b23b26d1","updated":"2015-05-13 09:52:06.000000000","message":"Done","commit_id":"900c81a905b38eb1f2b0e58e158805354eacfb60"}],"oslo_serialization/tests/test_jsonutils.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"522f8fcac4180fd200606cfd7a0c9c7ddce93ec8","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        x \u003d xmlrpclib.DateTime()"},{"line_number":151,"context_line":"        x.decode(\"19710203T04:05:06\")"},{"line_number":152,"context_line":"        self.assertEqual(jsonutils.to_primitive(x),"},{"line_number":153,"context_line":"                         \u00271971-02-03 04:05:06\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_iter(self):"},{"line_number":156,"context_line":"        class IterClass(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_920f022e","line":153,"updated":"2015-05-13 09:49:31.000000000","message":"This change is suspicious.","commit_id":"900c81a905b38eb1f2b0e58e158805354eacfb60"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"8ef27a7afeff1287a9a343819ef01d93c543b0b6","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        x \u003d xmlrpclib.DateTime()"},{"line_number":151,"context_line":"        x.decode(\"19710203T04:05:06\")"},{"line_number":152,"context_line":"        self.assertEqual(jsonutils.to_primitive(x),"},{"line_number":153,"context_line":"                         \u00271971-02-03 04:05:06\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_iter(self):"},{"line_number":156,"context_line":"        class IterClass(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_b24c4643","line":153,"in_reply_to":"9a0c5dc1_920f022e","updated":"2015-05-13 09:52:06.000000000","message":"That\u0027s because XML is not handled in the same way in the code; the next patch fixes that too… :(","commit_id":"900c81a905b38eb1f2b0e58e158805354eacfb60"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"33f97d9b399e308f0b9553137d60b34f628e4218","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        x \u003d xmlrpclib.DateTime()"},{"line_number":151,"context_line":"        x.decode(\"19710203T04:05:06\")"},{"line_number":152,"context_line":"        self.assertEqual(jsonutils.to_primitive(x),"},{"line_number":153,"context_line":"                         \u00271971-02-03 04:05:06\u0027)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_iter(self):"},{"line_number":156,"context_line":"        class IterClass(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_52686a87","line":153,"in_reply_to":"9a0c5dc1_b24c4643","updated":"2015-05-13 09:53:10.000000000","message":"Ah no I guess that\u0027s because of the typo you pointed actually!","commit_id":"900c81a905b38eb1f2b0e58e158805354eacfb60"}]}
