)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9c7f0e728bbb8211a823922263cd42292b260a2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6f1ecd06_146bb08f","updated":"2026-02-01 12:28:05.000000000","message":"recheck memory consumption problem was resolved","commit_id":"5e70e25281b1977b69a755285852f82560291bd7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"accf0f1348762983a6cf8ac773b49887241f379a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"29c3fe5a_8779037f","updated":"2026-02-10 14:48:58.000000000","message":"Small typo in a user-facing message","commit_id":"6918f868bce3edea09ff7ed0fad6841d8b025d9c"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fd12a7f43d7ac62a9b4d9b2053de98a2c0c23630","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d2928bd4_4cc2be86","updated":"2026-02-16 16:11:05.000000000","message":"Should we add a test to explicitly verify that passing a non-json format raises a ValueError? Since passing format\u003d\u0027human\u0027 now raises a ValueError, it might be good to mention that explicitly here to clarify the upgrade impact.","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b009a57d02d0e7f902c129e4b24e9942cfb30e27","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3c6f05a1_fc85a7fe","updated":"2026-02-13 16:25:01.000000000","message":"recheck","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"}],"oslo_utils/imageutils/qemu.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"accf0f1348762983a6cf8ac773b49887241f379a","unresolved":true,"context_lines":[{"line_number":64,"context_line":"    ) -\u003e None:"},{"line_number":65,"context_line":"        if isinstance(cmd_output, bytes | bytearray):"},{"line_number":66,"context_line":"            cmd_output \u003d cmd_output.decode()"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if format !\u003d \u0027json\u0027:"},{"line_number":69,"context_line":"            raise ValueError(\u0027Unsuppored format\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        details \u003d json.loads(cmd_output or \u0027{}\u0027)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9b697ae8_49c93713","line":69,"range":{"start_line":67,"start_character":1,"end_line":69,"end_character":49},"updated":"2026-02-10 14:48:58.000000000","message":"```suggestion\n\n        if format !\u003d \u0027json\u0027:\n            raise ValueError(\u0027Unsupported format\u0027)\n```","commit_id":"2f057b8b27863ffaa612b288041c2e1a782eaaa7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"40b455ef476acef9605e761db8737e10a071543a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    ) -\u003e None:"},{"line_number":65,"context_line":"        if isinstance(cmd_output, bytes | bytearray):"},{"line_number":66,"context_line":"            cmd_output \u003d cmd_output.decode()"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if format !\u003d \u0027json\u0027:"},{"line_number":69,"context_line":"            raise ValueError(\u0027Unsuppored format\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        details \u003d json.loads(cmd_output or \u0027{}\u0027)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cf78cbea_8c8c1dbb","line":69,"range":{"start_line":67,"start_character":1,"end_line":69,"end_character":49},"in_reply_to":"9b697ae8_49c93713","updated":"2026-02-11 04:56:05.000000000","message":"Fix applied.","commit_id":"2f057b8b27863ffaa612b288041c2e1a782eaaa7"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fd12a7f43d7ac62a9b4d9b2053de98a2c0c23630","unresolved":true,"context_lines":[{"line_number":65,"context_line":"            cmd_output \u003d cmd_output.decode()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        if format !\u003d \u0027json\u0027:"},{"line_number":68,"context_line":"            raise ValueError(\u0027Unsupported format\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        details \u003d json.loads(cmd_output or \u0027{}\u0027)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"69b3b717_806cbe87","line":68,"updated":"2026-02-16 16:11:05.000000000","message":"I think we can make the error message clearer, for example:\n\nUnsupported format: {format!r}. Only \u0027json\u0027 is supported.","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4a16f1f813ffc2f3da903c09aa5f5a020c0f8159","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            cmd_output \u003d cmd_output.decode()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        if format !\u003d \u0027json\u0027:"},{"line_number":68,"context_line":"            raise ValueError(\u0027Unsupported format\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        details \u003d json.loads(cmd_output or \u0027{}\u0027)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"d0fab78d_91a11922","line":68,"in_reply_to":"69b3b717_806cbe87","updated":"2026-02-16 16:24:16.000000000","message":"Done","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"fd12a7f43d7ac62a9b4d9b2053de98a2c0c23630","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        self.cluster_size \u003d details.get(\u0027cluster-size\u0027)"},{"line_number":78,"context_line":"        self.disk_size \u003d details.get(\u0027actual-size\u0027)"},{"line_number":79,"context_line":"        self.snapshots \u003d details.get(\u0027snapshots\u0027, [])"},{"line_number":80,"context_line":"        # Keep compatibility with old \"human\" format"},{"line_number":81,"context_line":"        self.encrypted \u003d \u0027yes\u0027 if details.get(\u0027encrypted\u0027) else None"},{"line_number":82,"context_line":"        self.format_specific \u003d details.get(\u0027format-specific\u0027)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fefd3b71_7ed7c641","line":80,"updated":"2026-02-16 16:11:05.000000000","message":"This comment seems outdated. Human format support was removed and we now raise for non-json formats, so I think it can be dropped. Or maybe I misunderstood something?","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"98495ae0d252611f462bf8c2563cfdbf3f7926ea","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        self.cluster_size \u003d details.get(\u0027cluster-size\u0027)"},{"line_number":78,"context_line":"        self.disk_size \u003d details.get(\u0027actual-size\u0027)"},{"line_number":79,"context_line":"        self.snapshots \u003d details.get(\u0027snapshots\u0027, [])"},{"line_number":80,"context_line":"        # Keep compatibility with old \"human\" format"},{"line_number":81,"context_line":"        self.encrypted \u003d \u0027yes\u0027 if details.get(\u0027encrypted\u0027) else None"},{"line_number":82,"context_line":"        self.format_specific \u003d details.get(\u0027format-specific\u0027)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"361fbac9_71c80649","line":80,"in_reply_to":"262ad231_b3b73c4f","updated":"2026-02-16 17:01:56.000000000","message":"Ok, I see. Maybe we can make the comment a bit clearer, for example:\n\nPreserve backward compatibility: this attribute historically\nreturned \"yes\" or None instead of a boolean value.","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6997c51268e1c79d90e3b76a2fa0808b3c59009e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.cluster_size \u003d details.get(\u0027cluster-size\u0027)"},{"line_number":78,"context_line":"        self.disk_size \u003d details.get(\u0027actual-size\u0027)"},{"line_number":79,"context_line":"        self.snapshots \u003d details.get(\u0027snapshots\u0027, [])"},{"line_number":80,"context_line":"        # Keep compatibility with old \"human\" format"},{"line_number":81,"context_line":"        self.encrypted \u003d \u0027yes\u0027 if details.get(\u0027encrypted\u0027) else None"},{"line_number":82,"context_line":"        self.format_specific \u003d details.get(\u0027format-specific\u0027)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f8494a04_d7f7e361","line":80,"in_reply_to":"361fbac9_71c80649","updated":"2026-02-17 04:39:36.000000000","message":"Done. I adjusted the comment because the logic part is obvious from the code.","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4a16f1f813ffc2f3da903c09aa5f5a020c0f8159","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        self.cluster_size \u003d details.get(\u0027cluster-size\u0027)"},{"line_number":78,"context_line":"        self.disk_size \u003d details.get(\u0027actual-size\u0027)"},{"line_number":79,"context_line":"        self.snapshots \u003d details.get(\u0027snapshots\u0027, [])"},{"line_number":80,"context_line":"        # Keep compatibility with old \"human\" format"},{"line_number":81,"context_line":"        self.encrypted \u003d \u0027yes\u0027 if details.get(\u0027encrypted\u0027) else None"},{"line_number":82,"context_line":"        self.format_specific \u003d details.get(\u0027format-specific\u0027)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"262ad231_b3b73c4f","line":80,"in_reply_to":"fefd3b71_7ed7c641","updated":"2026-02-16 16:24:16.000000000","message":"IMO this should be kept, to give a context about not using the boolean value directly.","commit_id":"06f95585bf74548f3bf6b2db4cd30ea8423e5a01"}]}
