)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"63427cacda77e96b05dd8251e7976b177cd28486","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add stream-based detection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This effectively unifies the InfoWrapper and detect_filee_format()"},{"line_number":10,"context_line":"behavior into a single approach that can work stream-based or with"},{"line_number":11,"context_line":"a file on disk."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e0223057_c6aead25","line":9,"range":{"start_line":9,"start_character":56,"end_line":9,"end_character":57},"updated":"2024-08-08 16:25:05.000000000","message":"nit: extra e","commit_id":"1bf6543ca76ad72876ca548b869de1edcbc8d004"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b11d0e332822c478e4fedbaa03c83295f62fe636","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add stream-based detection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This effectively unifies the InfoWrapper and detect_filee_format()"},{"line_number":10,"context_line":"behavior into a single approach that can work stream-based or with"},{"line_number":11,"context_line":"a file on disk."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"b17de7d1_fb523b8f","line":9,"range":{"start_line":9,"start_character":56,"end_line":9,"end_character":57},"in_reply_to":"e0223057_c6aead25","updated":"2024-08-08 16:31:28.000000000","message":"Uncool, thanks for catching :)","commit_id":"1bf6543ca76ad72876ca548b869de1edcbc8d004"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b8aa1b37bdd2276bf3931b4370a238c97bf008f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6ea579a4_52ddfafd","updated":"2024-08-08 14:33:31.000000000","message":"Thanks Herve, I appreciate the more comprehensive (i.e. not rubber-stamp) reviews :)","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"05726c5971ec2dee804c98486b9632154b3385ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d444bb80_14c0b9bd","updated":"2024-08-08 16:44:05.000000000","message":"Thank you!!","commit_id":"aa7c6a7bf05fe7abc6b42485cbd4b47825168c0a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bfb3256de344971957c1dd2dee48898cbe65b241","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"93fc2b25_f650466d","updated":"2024-08-08 20:10:03.000000000","message":"recheck some failure in eventletutils, obviously unrelated","commit_id":"aa7c6a7bf05fe7abc6b42485cbd4b47825168c0a"}],"oslo_utils/imageutils/format_inspector.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2a2abcba3d182d6916c1b247613ef987e6a162e0","unresolved":true,"context_lines":[{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"    :param source: The file-like input stream to wrap"},{"line_number":1268,"context_line":"    :param expected_format: The format name anticipated to match, if any."},{"line_number":1269,"context_line":"                            If this is non-None, reading of the stream will"},{"line_number":1270,"context_line":"                            be interrupted if the matching inspector raises"},{"line_number":1271,"context_line":"                            an error (indicting a mismatch or any other"},{"line_number":1272,"context_line":"                            problem). This allows the caller to abort before"}],"source_content_type":"text/x-python","patch_set":1,"id":"7810db25_18480045","line":1269,"range":{"start_line":1269,"start_character":39,"end_line":1269,"end_character":47},"updated":"2024-08-08 14:25:32.000000000","message":"Hard to read, I would prefer \"different from None\" but feel free to ignore this comment...","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b8aa1b37bdd2276bf3931b4370a238c97bf008f1","unresolved":true,"context_lines":[{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"    :param source: The file-like input stream to wrap"},{"line_number":1268,"context_line":"    :param expected_format: The format name anticipated to match, if any."},{"line_number":1269,"context_line":"                            If this is non-None, reading of the stream will"},{"line_number":1270,"context_line":"                            be interrupted if the matching inspector raises"},{"line_number":1271,"context_line":"                            an error (indicting a mismatch or any other"},{"line_number":1272,"context_line":"                            problem). This allows the caller to abort before"}],"source_content_type":"text/x-python","patch_set":1,"id":"438b994f_cc2c877f","line":1269,"range":{"start_line":1269,"start_character":39,"end_line":1269,"end_character":47},"in_reply_to":"7810db25_18480045","updated":"2024-08-08 14:33:31.000000000","message":"No, you\u0027re right, it\u0027s confusing.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2a2abcba3d182d6916c1b247613ef987e6a162e0","unresolved":true,"context_lines":[{"line_number":1270,"context_line":"                            be interrupted if the matching inspector raises"},{"line_number":1271,"context_line":"                            an error (indicting a mismatch or any other"},{"line_number":1272,"context_line":"                            problem). This allows the caller to abort before"},{"line_number":1273,"context_line":"                            all data is processed."},{"line_number":1274,"context_line":"    :param allowed_formats: A list of format names that limits the inspector"},{"line_number":1275,"context_line":"                            objects that will be used. This may be a security"},{"line_number":1276,"context_line":"                            hole if used improperly, but may be used to limit"}],"source_content_type":"text/x-python","patch_set":1,"id":"2bf3f8ab_e38cb41c","line":1273,"range":{"start_line":1273,"start_character":37,"end_line":1273,"end_character":39},"updated":"2024-08-08 14:25:32.000000000","message":"I would have wrote \"are\" but I\u0027m not a native speaker so I suppose you are right.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b8aa1b37bdd2276bf3931b4370a238c97bf008f1","unresolved":true,"context_lines":[{"line_number":1270,"context_line":"                            be interrupted if the matching inspector raises"},{"line_number":1271,"context_line":"                            an error (indicting a mismatch or any other"},{"line_number":1272,"context_line":"                            problem). This allows the caller to abort before"},{"line_number":1273,"context_line":"                            all data is processed."},{"line_number":1274,"context_line":"    :param allowed_formats: A list of format names that limits the inspector"},{"line_number":1275,"context_line":"                            objects that will be used. This may be a security"},{"line_number":1276,"context_line":"                            hole if used improperly, but may be used to limit"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf123771_34563772","line":1273,"range":{"start_line":1273,"start_character":37,"end_line":1273,"end_character":39},"in_reply_to":"2bf3f8ab_e38cb41c","updated":"2024-08-08 14:33:31.000000000","message":"You might be right technically (since \"data\" is plural) but I think a native speaker will say it like I have it here :)","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2a2abcba3d182d6916c1b247613ef987e6a162e0","unresolved":true,"context_lines":[{"line_number":1330,"context_line":"    def format(self):"},{"line_number":1331,"context_line":"        \"\"\"The format determined from the content."},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"        If this is None, a decision has not been reached. If non-None,"},{"line_number":1334,"context_line":"        it is a FileInspector that matches (which may be RawFileInspector"},{"line_number":1335,"context_line":"        if no other formats matched and enough of the stream has been read"},{"line_number":1336,"context_line":"        to make that determination). If more than one format matched, then"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff9524d2_6574e322","line":1333,"range":{"start_line":1333,"start_character":61,"end_line":1333,"end_character":69},"updated":"2024-08-08 14:25:32.000000000","message":"same remark","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b8aa1b37bdd2276bf3931b4370a238c97bf008f1","unresolved":false,"context_lines":[{"line_number":1330,"context_line":"    def format(self):"},{"line_number":1331,"context_line":"        \"\"\"The format determined from the content."},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"        If this is None, a decision has not been reached. If non-None,"},{"line_number":1334,"context_line":"        it is a FileInspector that matches (which may be RawFileInspector"},{"line_number":1335,"context_line":"        if no other formats matched and enough of the stream has been read"},{"line_number":1336,"context_line":"        to make that determination). If more than one format matched, then"}],"source_content_type":"text/x-python","patch_set":1,"id":"ed92ffd7_75ba88c5","line":1333,"range":{"start_line":1333,"start_character":61,"end_line":1333,"end_character":69},"in_reply_to":"ff9524d2_6574e322","updated":"2024-08-08 14:33:31.000000000","message":"Acknowledged","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2a2abcba3d182d6916c1b247613ef987e6a162e0","unresolved":true,"context_lines":[{"line_number":1351,"context_line":"                str(i) for i in matches))"},{"line_number":1352,"context_line":"        if matches:"},{"line_number":1353,"context_line":"            return matches[0]"},{"line_number":1354,"context_line":"        else:"},{"line_number":1355,"context_line":"            # If nothing matched, we return the raw format"},{"line_number":1356,"context_line":"            return raw"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6827da32_715f0dbc","line":1355,"range":{"start_line":1354,"start_character":8,"end_line":1355,"end_character":58},"updated":"2024-08-08 14:25:32.000000000","message":"`return raw` is like a default case so I don\u0027t think we need the else statement, at this point any other cases would be caught by the `if matches`","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d88ea5abd261fb4ed9b72a1ff008597b9848f4d6","unresolved":true,"context_lines":[{"line_number":1351,"context_line":"                str(i) for i in matches))"},{"line_number":1352,"context_line":"        if matches:"},{"line_number":1353,"context_line":"            return matches[0]"},{"line_number":1354,"context_line":"        else:"},{"line_number":1355,"context_line":"            # If nothing matched, we return the raw format"},{"line_number":1356,"context_line":"            return raw"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cc671a09_e0a32428","line":1355,"range":{"start_line":1354,"start_character":8,"end_line":1355,"end_character":58},"in_reply_to":"0326f1cf_9d78ce57","updated":"2024-08-08 15:30:05.000000000","message":"I think I can just restructure this to make the fall-through case the expected/safe one and then I\u0027ll be less concerned about it. My nova DNM test is running against this latest version now, and I\u0027ll push up that change when it\u0027s done.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b8aa1b37bdd2276bf3931b4370a238c97bf008f1","unresolved":true,"context_lines":[{"line_number":1351,"context_line":"                str(i) for i in matches))"},{"line_number":1352,"context_line":"        if matches:"},{"line_number":1353,"context_line":"            return matches[0]"},{"line_number":1354,"context_line":"        else:"},{"line_number":1355,"context_line":"            # If nothing matched, we return the raw format"},{"line_number":1356,"context_line":"            return raw"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"880ec016_c1dd20cc","line":1355,"range":{"start_line":1354,"start_character":8,"end_line":1355,"end_character":58},"in_reply_to":"6827da32_715f0dbc","updated":"2024-08-08 14:33:31.000000000","message":"In security-sensitive stuff like this, I like to have decisions be tight.. meaning, we choose one thing or the other, and not rely on falling through to something that might someday, after a refactor, be a bad default. Doing it this way makes it a little more (visually) explicit I think.\n\nThat said, it is of course currently equivalent to just fall through so if you think it\u0027s substantially more readable that way I\u0027ll be glad to change it.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"024b64ea6c7a4dd04d94413e8274e177c19b3cd0","unresolved":true,"context_lines":[{"line_number":1351,"context_line":"                str(i) for i in matches))"},{"line_number":1352,"context_line":"        if matches:"},{"line_number":1353,"context_line":"            return matches[0]"},{"line_number":1354,"context_line":"        else:"},{"line_number":1355,"context_line":"            # If nothing matched, we return the raw format"},{"line_number":1356,"context_line":"            return raw"},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"0326f1cf_9d78ce57","line":1355,"range":{"start_line":1354,"start_character":8,"end_line":1355,"end_character":58},"in_reply_to":"880ec016_c1dd20cc","updated":"2024-08-08 15:05:37.000000000","message":"Your arguments are good, if you decide to keep the current state, I\u0027d suggest then to add a tiny comment to precisely explain what you have in mind by doing that. It will avoid someone else who would pass here with the same thoughts than mine to propose a patch to drop that `else` statement.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"25ba2dcd8b39268f2971e4f374f6426b5d599acf","unresolved":true,"context_lines":[{"line_number":1337,"context_line":"        ImageFormatError is raised."},{"line_number":1338,"context_line":"        \"\"\""},{"line_number":1339,"context_line":"        non_raw \u003d set([i for i in self._inspectors if i.NAME !\u003d \u0027raw\u0027])"},{"line_number":1340,"context_line":"        raw \u003d list(self._inspectors - non_raw)[0]"},{"line_number":1341,"context_line":"        complete \u003d all([i.complete for i in non_raw])"},{"line_number":1342,"context_line":"        matches \u003d [i for i in non_raw if i.format_match]"},{"line_number":1343,"context_line":"        if not complete and not self._finished:"}],"source_content_type":"text/x-python","patch_set":3,"id":"b8974ea5_080c2478","line":1340,"range":{"start_line":1340,"start_character":46,"end_line":1340,"end_character":49},"updated":"2024-08-13 14:33:38.000000000","message":"This may cause IndexError if allowed_formats is given but it does not contain raw.","commit_id":"aa7c6a7bf05fe7abc6b42485cbd4b47825168c0a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"137712c4c16a08f8679603d81cfb34ef1e1d32ea","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"        ImageFormatError is raised."},{"line_number":1338,"context_line":"        \"\"\""},{"line_number":1339,"context_line":"        non_raw \u003d set([i for i in self._inspectors if i.NAME !\u003d \u0027raw\u0027])"},{"line_number":1340,"context_line":"        raw \u003d list(self._inspectors - non_raw)[0]"},{"line_number":1341,"context_line":"        complete \u003d all([i.complete for i in non_raw])"},{"line_number":1342,"context_line":"        matches \u003d [i for i in non_raw if i.format_match]"},{"line_number":1343,"context_line":"        if not complete and not self._finished:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3bcca825_9f790895","line":1340,"range":{"start_line":1340,"start_character":46,"end_line":1340,"end_character":49},"in_reply_to":"5107868a_605d40f4","updated":"2024-08-13 15:05:40.000000000","message":"Done","commit_id":"aa7c6a7bf05fe7abc6b42485cbd4b47825168c0a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"55269828d09b1e9cc88b925b657915e7064fa551","unresolved":true,"context_lines":[{"line_number":1337,"context_line":"        ImageFormatError is raised."},{"line_number":1338,"context_line":"        \"\"\""},{"line_number":1339,"context_line":"        non_raw \u003d set([i for i in self._inspectors if i.NAME !\u003d \u0027raw\u0027])"},{"line_number":1340,"context_line":"        raw \u003d list(self._inspectors - non_raw)[0]"},{"line_number":1341,"context_line":"        complete \u003d all([i.complete for i in non_raw])"},{"line_number":1342,"context_line":"        matches \u003d [i for i in non_raw if i.format_match]"},{"line_number":1343,"context_line":"        if not complete and not self._finished:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5107868a_605d40f4","line":1340,"range":{"start_line":1340,"start_character":46,"end_line":1340,"end_character":49},"in_reply_to":"b8974ea5_080c2478","updated":"2024-08-13 14:36:48.000000000","message":"Ack, when I first wrote this raw was compelled to be in here (before the GPT thing). I\u0027ll fix thanks.","commit_id":"aa7c6a7bf05fe7abc6b42485cbd4b47825168c0a"}],"oslo_utils/tests/imageutils/test_format_inspector.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2a2abcba3d182d6916c1b247613ef987e6a162e0","unresolved":true,"context_lines":[{"line_number":320,"context_line":"            shell\u003dTrue)"},{"line_number":321,"context_line":"        return qcow, iso, fn"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_bad_iso_qcow2(self):"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        _, _, fn \u003d self._generate_bad_iso()"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c65fafff_c826f443","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":26},"updated":"2024-08-08 14:25:32.000000000","message":"Shouldn\u0027t we rename that test?\nThe original version seems to test 2 formats, `iso` and `qcow2`, but as far as I can see the new version seems only focused on the `iso` format.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b8aa1b37bdd2276bf3931b4370a238c97bf008f1","unresolved":true,"context_lines":[{"line_number":320,"context_line":"            shell\u003dTrue)"},{"line_number":321,"context_line":"        return qcow, iso, fn"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_bad_iso_qcow2(self):"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        _, _, fn \u003d self._generate_bad_iso()"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f84fb004_20ec74c3","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":26},"in_reply_to":"c65fafff_c826f443","updated":"2024-08-08 14:33:31.000000000","message":"No, it\u0027s the same test. The `generate_bad_iso()` function creates an iso with a qcow2 header in the system area to try to fool detectors. So this is testing the same thing it was before, it can just use the inbuilt multi-format-is-an-error detection logic instead of having to do that itself. I can add a comment to make it more clear though.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d88ea5abd261fb4ed9b72a1ff008597b9848f4d6","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            shell\u003dTrue)"},{"line_number":321,"context_line":"        return qcow, iso, fn"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_bad_iso_qcow2(self):"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        _, _, fn \u003d self._generate_bad_iso()"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfa983b8_24d109d2","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":26},"in_reply_to":"c66ee9a7_135f4005","updated":"2024-08-08 15:30:05.000000000","message":"Acknowledged","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"024b64ea6c7a4dd04d94413e8274e177c19b3cd0","unresolved":true,"context_lines":[{"line_number":320,"context_line":"            shell\u003dTrue)"},{"line_number":321,"context_line":"        return qcow, iso, fn"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def test_bad_iso_qcow2(self):"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        _, _, fn \u003d self._generate_bad_iso()"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c66ee9a7_135f4005","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":26},"in_reply_to":"f84fb004_20ec74c3","updated":"2024-08-08 15:05:37.000000000","message":"Thanks for details, I missed that point. Indeed a comment could help to better appreciate that trick.","commit_id":"056896119fc52e67bd8db49a84690d759a8b2fbf"}]}
