)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"8e65731838848435bb0b77d33efbb43e86316a64","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b3ed8b86_30f14c2b","updated":"2026-07-02 11:08:09.000000000","message":"Nice catch!","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"19758369f46ea453fac9c28b679bde636d3d2323","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d5b98f83_0d7c2ed6","updated":"2026-07-02 15:19:15.000000000","message":"Thanks Riccardo for working on this. I tried to test the patch and it seems to be good mostly \\o/ i\u0027ve only found one place (in `list-changes` command) where this is causing some error, see my comments. otherwise this looks good \\o/","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"d2f96d5bf5a138b7c385e62d3f083c1b6bfa5ff5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"81f22677_0f7d7186","updated":"2026-07-03 13:37:16.000000000","message":"thanks for this patch Riccardo! looks good, the tests for the fixed function are awesome \\o/ the reworking and using more recent release as example (`gazpacho`) helps folks i think, too. tanks again for taking the time and working on this! +2!","commit_id":"351b862a52fae8515e5c76c973e9442e6ed34459"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"5c2b955c1237475474d01932b385a09b79fda10b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6520a87a_48954b79","in_reply_to":"81f22677_0f7d7186","updated":"2026-07-06 07:53:35.000000000","message":"my pleasure :)","commit_id":"351b862a52fae8515e5c76c973e9442e6ed34459"}],"openstack_releases/cmds/list_changes.py":[{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"19758369f46ea453fac9c28b679bde636d3d2323","unresolved":true,"context_lines":[{"line_number":571,"context_line":"                    show_dates\u003dTrue,"},{"line_number":572,"context_line":"                    skip_requirement_merges\u003dTrue,"},{"line_number":573,"context_line":"                    is_stable\u003dbranch.startswith(\u0027stable/\u0027),"},{"line_number":574,"context_line":"                    series\u003ddeliv.series,"},{"line_number":575,"context_line":"                    email\u003d\u0027test-job@openstack.org\u0027,"},{"line_number":576,"context_line":"                    email_from\u003d\u0027test-job@openstack.org\u0027,"},{"line_number":577,"context_line":"                    email_reply_to\u003d\u0027noreply@openstack.org\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7c14724e_7843092e","line":574,"updated":"2026-07-02 15:19:15.000000000","message":"here we are passing deliv.series, which is interestingly seemed to be working (at least did not drop any stack trace) without this patch, but with this patch it drops a stack trace and the command exits. see the possible fix for this in my comment in openstack/release_notes.py. though i haven\u0027t fully tested it yet.","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"45f1bc37234f43288bfe0ec2d054d76353154276","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                    show_dates\u003dTrue,"},{"line_number":572,"context_line":"                    skip_requirement_merges\u003dTrue,"},{"line_number":573,"context_line":"                    is_stable\u003dbranch.startswith(\u0027stable/\u0027),"},{"line_number":574,"context_line":"                    series\u003ddeliv.series,"},{"line_number":575,"context_line":"                    email\u003d\u0027test-job@openstack.org\u0027,"},{"line_number":576,"context_line":"                    email_from\u003d\u0027test-job@openstack.org\u0027,"},{"line_number":577,"context_line":"                    email_reply_to\u003d\u0027noreply@openstack.org\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"0ea6a820_83edf2f2","line":574,"in_reply_to":"7c14724e_7843092e","updated":"2026-07-03 08:03:58.000000000","message":"Acknowledged","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"}],"openstack_releases/release_notes.py":[{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"19758369f46ea453fac9c28b679bde636d3d2323","unresolved":true,"context_lines":[{"line_number":24,"context_line":"from reno import formatter"},{"line_number":25,"context_line":"from reno import loader"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from openstack_releases import rst2txt"},{"line_number":28,"context_line":"from openstack_releases import yamlutils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"111cac33_7a700acb","line":27,"updated":"2026-07-02 15:19:15.000000000","message":"```suggestion\nfrom openstack_releases import gitutils\nfrom openstack_releases import rst2txt\n```","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"45f1bc37234f43288bfe0ec2d054d76353154276","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from reno import formatter"},{"line_number":25,"context_line":"from reno import loader"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from openstack_releases import rst2txt"},{"line_number":28,"context_line":"from openstack_releases import yamlutils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c3b01275_6d7f2885","line":27,"in_reply_to":"111cac33_7a700acb","updated":"2026-07-03 08:03:58.000000000","message":"Acknowledged","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"19758369f46ea453fac9c28b679bde636d3d2323","unresolved":true,"context_lines":[{"line_number":352,"context_line":"        )"},{"line_number":353,"context_line":"        branch \u003d None"},{"line_number":354,"context_line":"        if is_stable and series:"},{"line_number":355,"context_line":"            branch \u003d \u0027origin/stable/%s\u0027 % series"},{"line_number":356,"context_line":"        cfg.override(branch\u003dbranch)"},{"line_number":357,"context_line":"        ldr \u003d loader.Loader(conf\u003dcfg, ignore_cache\u003dTrue)"},{"line_number":358,"context_line":"        if end_revision in ldr.versions:"}],"source_content_type":"text/x-python","patch_set":1,"id":"43586aa7_2ff7085b","line":355,"range":{"start_line":355,"start_character":42,"end_line":355,"end_character":48},"updated":"2026-07-02 15:19:15.000000000","message":"```suggestion\n            branch \u003d \u0027origin/stable/%s\u0027 % gitutils.get_stable_branch_id(series)\n```","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"45f1bc37234f43288bfe0ec2d054d76353154276","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        )"},{"line_number":353,"context_line":"        branch \u003d None"},{"line_number":354,"context_line":"        if is_stable and series:"},{"line_number":355,"context_line":"            branch \u003d \u0027origin/stable/%s\u0027 % series"},{"line_number":356,"context_line":"        cfg.override(branch\u003dbranch)"},{"line_number":357,"context_line":"        ldr \u003d loader.Loader(conf\u003dcfg, ignore_cache\u003dTrue)"},{"line_number":358,"context_line":"        if end_revision in ldr.versions:"}],"source_content_type":"text/x-python","patch_set":1,"id":"615d0f33_9f1a47ff","line":355,"range":{"start_line":355,"start_character":42,"end_line":355,"end_character":48},"in_reply_to":"43586aa7_2ff7085b","updated":"2026-07-03 08:03:58.000000000","message":"Acknowledged","commit_id":"fda63b989bde8b95fcdd79badf998ccde4280230"}],"openstack_releases/tests/test_gitutils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2107e3f238eb4c02370ee46ba76573787af420e0","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_old_series_name_as_release_id("},{"line_number":90,"context_line":"            self, mock_full_name, mock_exists):"},{"line_number":91,"context_line":"        \"\"\"Old series without release-id: get_full_branch_name returns"},{"line_number":92,"context_line":"        stable/\u003cseries-name\u003e (e.g. stable/zed) since release_id falls"},{"line_number":93,"context_line":"        back to the series name.\"\"\""},{"line_number":94,"context_line":"        mock_full_name.return_value \u003d \u0027stable/zed\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"73e34d90_8505a63b","line":91,"updated":"2026-07-03 08:25:25.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"805705dd2ed197c942312de3e3308394621ee5fe"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2107e3f238eb4c02370ee46ba76573787af420e0","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_old_series_name_as_release_id("},{"line_number":90,"context_line":"            self, mock_full_name, mock_exists):"},{"line_number":91,"context_line":"        \"\"\"Old series without release-id: get_full_branch_name returns"},{"line_number":92,"context_line":"        stable/\u003cseries-name\u003e (e.g. stable/zed) since release_id falls"},{"line_number":93,"context_line":"        back to the series name.\"\"\""},{"line_number":94,"context_line":"        mock_full_name.return_value \u003d \u0027stable/zed\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"6d692699_76fd93da","line":91,"updated":"2026-07-03 08:25:25.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"805705dd2ed197c942312de3e3308394621ee5fe"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2107e3f238eb4c02370ee46ba76573787af420e0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def test_old_series_name_as_release_id("},{"line_number":90,"context_line":"            self, mock_full_name, mock_exists):"},{"line_number":91,"context_line":"        \"\"\"Old series without release-id: get_full_branch_name returns"},{"line_number":92,"context_line":"        stable/\u003cseries-name\u003e (e.g. stable/zed) since release_id falls"},{"line_number":93,"context_line":"        back to the series name.\"\"\""},{"line_number":94,"context_line":"        mock_full_name.return_value \u003d \u0027stable/zed\u0027"},{"line_number":95,"context_line":"        mock_exists.return_value \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"97baceba_b9a333e2","line":92,"updated":"2026-07-03 08:25:25.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"805705dd2ed197c942312de3e3308394621ee5fe"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2107e3f238eb4c02370ee46ba76573787af420e0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def test_old_series_name_as_release_id("},{"line_number":90,"context_line":"            self, mock_full_name, mock_exists):"},{"line_number":91,"context_line":"        \"\"\"Old series without release-id: get_full_branch_name returns"},{"line_number":92,"context_line":"        stable/\u003cseries-name\u003e (e.g. stable/zed) since release_id falls"},{"line_number":93,"context_line":"        back to the series name.\"\"\""},{"line_number":94,"context_line":"        mock_full_name.return_value \u003d \u0027stable/zed\u0027"},{"line_number":95,"context_line":"        mock_exists.return_value \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"f8c1e685_3bcd7085","line":92,"updated":"2026-07-03 08:25:25.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"805705dd2ed197c942312de3e3308394621ee5fe"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2107e3f238eb4c02370ee46ba76573787af420e0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            self, mock_full_name, mock_exists):"},{"line_number":91,"context_line":"        \"\"\"Old series without release-id: get_full_branch_name returns"},{"line_number":92,"context_line":"        stable/\u003cseries-name\u003e (e.g. stable/zed) since release_id falls"},{"line_number":93,"context_line":"        back to the series name.\"\"\""},{"line_number":94,"context_line":"        mock_full_name.return_value \u003d \u0027stable/zed\u0027"},{"line_number":95,"context_line":"        mock_exists.return_value \u003d True"},{"line_number":96,"context_line":"        result \u003d gitutils.stable_branch_exists(\u0027/tmp\u0027, \u0027openstack/nova\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7687e67f_4efca54b","line":93,"updated":"2026-07-03 08:25:25.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"805705dd2ed197c942312de3e3308394621ee5fe"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"2107e3f238eb4c02370ee46ba76573787af420e0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            self, mock_full_name, mock_exists):"},{"line_number":91,"context_line":"        \"\"\"Old series without release-id: get_full_branch_name returns"},{"line_number":92,"context_line":"        stable/\u003cseries-name\u003e (e.g. stable/zed) since release_id falls"},{"line_number":93,"context_line":"        back to the series name.\"\"\""},{"line_number":94,"context_line":"        mock_full_name.return_value \u003d \u0027stable/zed\u0027"},{"line_number":95,"context_line":"        mock_exists.return_value \u003d True"},{"line_number":96,"context_line":"        result \u003d gitutils.stable_branch_exists(\u0027/tmp\u0027, \u0027openstack/nova\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"b6df7741_1501c864","line":93,"updated":"2026-07-03 08:25:25.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"805705dd2ed197c942312de3e3308394621ee5fe"}]}
