)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"4016ce2903d9e1f22beda8fd162ba7bbc846b9c5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f5d75ef6_580f8b15","updated":"2026-08-06 16:19:25.000000000","message":"This has unit test failures which are real. Please fix them and re-add hashtag.","commit_id":"9a4fd1bf91f88bb91397aa92e987fc34372c9d02"}],"doc/source/cli/ironic-manage.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"97efe615d2006eb060bcb2437233e2154ea2e393","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"  ironic-manage inspection-rules check --rules rules.yaml --data-dir \u003cdirectory\u003e"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":".. option:: --rules \u003crules file\u003e"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  YAML file with the inspection rules to evaluate. Always required."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"77fa95d1_aab853f1","line":122,"updated":"2026-07-08 12:59:26.000000000","message":"nit: unconditionally required options should usually be positional","commit_id":"309326ca0c9491d01658aec995fcfd680772951f"}],"ironic/common/inspection_rules/tester.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"97efe615d2006eb060bcb2437233e2154ea2e393","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            return 1"},{"line_number":234,"context_line":"        self.evaluate_rules()"},{"line_number":235,"context_line":"        self.print_results()"},{"line_number":236,"context_line":"        if sum(len(r[\"errors\"]) for r in self.results):"},{"line_number":237,"context_line":"            return 1"},{"line_number":238,"context_line":"        return 0"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b2dc9365_e226655a","line":236,"updated":"2026-07-08 12:59:26.000000000","message":"nit: a bit less cryptic `any(r[\"errors\"] for r in self.results)`","commit_id":"309326ca0c9491d01658aec995fcfd680772951f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"97efe615d2006eb060bcb2437233e2154ea2e393","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    :param data_dir: directory containing test case subdirectories."},{"line_number":274,"context_line":"    :param rules_file: YAML file with the inspection rules to evaluate."},{"line_number":275,"context_line":"    :returns: an exit code, 0 when all test cases pass."},{"line_number":276,"context_line":"    \"\"\""},{"line_number":277,"context_line":"    if not os.path.isdir(data_dir):"},{"line_number":278,"context_line":"        print(f\"No data directory found at {data_dir}\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9b6a8d69_74ea992d","line":275,"updated":"2026-07-08 12:59:26.000000000","message":"Let\u0027s use booleans or raise exceptions for anything that is not directly interfaces with sys.exit","commit_id":"309326ca0c9491d01658aec995fcfd680772951f"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e2f13a8368ee5b889916ca7a0ea00e057b578725","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    :param data_dir: directory containing test case subdirectories."},{"line_number":274,"context_line":"    :param rules_file: YAML file with the inspection rules to evaluate."},{"line_number":275,"context_line":"    :returns: an exit code, 0 when all test cases pass."},{"line_number":276,"context_line":"    \"\"\""},{"line_number":277,"context_line":"    if not os.path.isdir(data_dir):"},{"line_number":278,"context_line":"        print(f\"No data directory found at {data_dir}\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"27871bdb_e2bee9f1","line":275,"in_reply_to":"9b6a8d69_74ea992d","updated":"2026-07-21 15:22:17.000000000","message":"This function results are just passed to sys.exit() which is why I did it this way.","commit_id":"309326ca0c9491d01658aec995fcfd680772951f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"97efe615d2006eb060bcb2437233e2154ea2e393","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    :returns: an exit code, 0 when all test cases pass."},{"line_number":276,"context_line":"    \"\"\""},{"line_number":277,"context_line":"    if not os.path.isdir(data_dir):"},{"line_number":278,"context_line":"        print(f\"No data directory found at {data_dir}\")"},{"line_number":279,"context_line":"        return 0"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    test_dirs \u003d sorted("}],"source_content_type":"text/x-python","patch_set":1,"id":"e343aac3_e0f9fe08","line":278,"updated":"2026-07-08 12:59:26.000000000","message":"Since this file is now a module, it should use logging instead of printing to stdout (and in any case should output status information to stderr)","commit_id":"309326ca0c9491d01658aec995fcfd680772951f"}]}
