)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"261248c8a228f67c35713ccfb97bc057de970899","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"937cd901_6ea3d4bc","updated":"2024-02-05 16:26:15.000000000","message":"-1 for the testing","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"3c59b375229c60885e918cf2e166fb0c06c42eec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8fb5b50a_84ccad09","updated":"2024-02-02 03:46:49.000000000","message":"I can\u0027t get this to pass unit tests locally but also by \u0027tox\u0027 is using 3.12 no matter how hard I try to convince it to use 3.11 :/","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"12000736a01f42557a562111790a56823399371c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"410ca849_7acfb7e9","updated":"2024-02-23 14:53:02.000000000","message":"OK, looking at the code again, i think every case is covered, sorry for not realizing this earlier :/","commit_id":"9fc7ad3f321a280baca18df4f7b3a5fb7ab8664b"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"bde213e32366605d075d74733fd8844eafa7fe09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"81d2bba0_6b45bb9e","updated":"2024-02-22 14:54:13.000000000","message":"overriding ptl-approval for code-change","commit_id":"9fc7ad3f321a280baca18df4f7b3a5fb7ab8664b"}],"openstack_releases/_redirections.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"261248c8a228f67c35713ccfb97bc057de970899","unresolved":true,"context_lines":[{"line_number":56,"context_line":"                    ref_type \u003d \u0027tag\u0027"},{"line_number":57,"context_line":"            # If a series is marked as EOL then we that tag is the correct"},{"line_number":58,"context_line":"            # destination, no options"},{"line_number":59,"context_line":"            if release.is_eol:"},{"line_number":60,"context_line":"                target \u003d str(release.version)"},{"line_number":61,"context_line":"                ref_type \u003d \u0027tag\u0027"},{"line_number":62,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"c23d984a_2ef1b9c6","line":59,"updated":"2024-02-05 16:26:15.000000000","message":"this will overwrite what is done in the \"if is_eom\" branch above. better start with this and do an \"elif release.is_eom:\" after it?","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"3c59b375229c60885e918cf2e166fb0c06c42eec","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        target \u003d \u0027master\u0027"},{"line_number":28,"context_line":"        ref_type \u003d \u0027branch\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        release_id \u003d _series_status_data[deliv.series].release_id"},{"line_number":31,"context_line":"        if not release_id:"},{"line_number":32,"context_line":"            release_id \u003d deliv.series"},{"line_number":33,"context_line":"        # Unless there is a stable or unmaintained branch"},{"line_number":34,"context_line":"        # Look at all branches We can\u0027t rely the ordering in the deliverable"},{"line_number":35,"context_line":"        # file"},{"line_number":36,"context_line":"        for branch in deliv.branches:"},{"line_number":37,"context_line":"            # Set the target when the branch is \u0027stable/\u0027"},{"line_number":38,"context_line":"            # but ONLY If the target would otherwise be the master branch"},{"line_number":39,"context_line":"            if target \u003d\u003d \u0027master\u0027 and branch.name \u003d\u003d \u0027stable/%s\u0027 % (release_id):"},{"line_number":40,"context_line":"                target \u003d branch.name"},{"line_number":41,"context_line":"            # An open unmaintained branch should become the target in"},{"line_number":42,"context_line":"            # preference over a master or stable branch"},{"line_number":43,"context_line":"            elif branch.name \u003d\u003d \u0027unmaintained/%s\u0027 % (release_id):"},{"line_number":44,"context_line":"                target \u003d branch.name"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # After looking at all the branches we now look for ${series}-eom"},{"line_number":47,"context_line":"        # or a ${series}-eol tag"},{"line_number":48,"context_line":"        for release in deliv.releases:"},{"line_number":49,"context_line":"            # an EOM release is a probable target."},{"line_number":50,"context_line":"            if release.is_eom:"},{"line_number":51,"context_line":"                # Select the EOM tag instad of a master or stable branch."},{"line_number":52,"context_line":"                # however if there is an unmaintained branch that\u0027s the"},{"line_number":53,"context_line":"                # expected target until the series is marked EOL"},{"line_number":54,"context_line":"                if target \u003d\u003d \u0027master\u0027 or target \u003d\u003d \u0027stable/%s\u0027 % (release_id):"},{"line_number":55,"context_line":"                    target \u003d str(release.version)"},{"line_number":56,"context_line":"                    ref_type \u003d \u0027tag\u0027"},{"line_number":57,"context_line":"            # If a series is marked as EOL then we that tag is the correct"},{"line_number":58,"context_line":"            # destination, no options"},{"line_number":59,"context_line":"            if release.is_eol:"},{"line_number":60,"context_line":"                target \u003d str(release.version)"},{"line_number":61,"context_line":"                ref_type \u003d \u0027tag\u0027"},{"line_number":62,"context_line":"                break"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Insert into the beginning of the list so that redirections are"},{"line_number":65,"context_line":"        # master -\u003e juno"}],"source_content_type":"text/x-python","patch_set":1,"id":"59485813_843c5c4e","line":62,"range":{"start_line":30,"start_character":0,"end_line":62,"end_character":21},"updated":"2024-02-02 03:46:49.000000000","message":"There\u0027s probably a better way by looking at the series_status.  For example\n\nOnly consider:\n * \u0027master\u0027 valid for releases in development ;\n * \u0027stable/*\u0027 valid for released series ; and\n * \u0027unmaintained/*\u0027 for all others.\n\nI\u0027m happy to re-work this if desired?","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"1333f2bd6b8e9f678136021449be9022594247c4","unresolved":true,"context_lines":[{"line_number":27,"context_line":"        target \u003d \u0027master\u0027"},{"line_number":28,"context_line":"        ref_type \u003d \u0027branch\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        release_id \u003d _series_status_data[deliv.series].release_id"},{"line_number":31,"context_line":"        if not release_id:"},{"line_number":32,"context_line":"            release_id \u003d deliv.series"},{"line_number":33,"context_line":"        # Unless there is a stable or unmaintained branch"},{"line_number":34,"context_line":"        # Look at all branches We can\u0027t rely the ordering in the deliverable"},{"line_number":35,"context_line":"        # file"},{"line_number":36,"context_line":"        for branch in deliv.branches:"},{"line_number":37,"context_line":"            # Set the target when the branch is \u0027stable/\u0027"},{"line_number":38,"context_line":"            # but ONLY If the target would otherwise be the master branch"},{"line_number":39,"context_line":"            if target \u003d\u003d \u0027master\u0027 and branch.name \u003d\u003d \u0027stable/%s\u0027 % (release_id):"},{"line_number":40,"context_line":"                target \u003d branch.name"},{"line_number":41,"context_line":"            # An open unmaintained branch should become the target in"},{"line_number":42,"context_line":"            # preference over a master or stable branch"},{"line_number":43,"context_line":"            elif branch.name \u003d\u003d \u0027unmaintained/%s\u0027 % (release_id):"},{"line_number":44,"context_line":"                target \u003d branch.name"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # After looking at all the branches we now look for ${series}-eom"},{"line_number":47,"context_line":"        # or a ${series}-eol tag"},{"line_number":48,"context_line":"        for release in deliv.releases:"},{"line_number":49,"context_line":"            # an EOM release is a probable target."},{"line_number":50,"context_line":"            if release.is_eom:"},{"line_number":51,"context_line":"                # Select the EOM tag instad of a master or stable branch."},{"line_number":52,"context_line":"                # however if there is an unmaintained branch that\u0027s the"},{"line_number":53,"context_line":"                # expected target until the series is marked EOL"},{"line_number":54,"context_line":"                if target \u003d\u003d \u0027master\u0027 or target \u003d\u003d \u0027stable/%s\u0027 % (release_id):"},{"line_number":55,"context_line":"                    target \u003d str(release.version)"},{"line_number":56,"context_line":"                    ref_type \u003d \u0027tag\u0027"},{"line_number":57,"context_line":"            # If a series is marked as EOL then we that tag is the correct"},{"line_number":58,"context_line":"            # destination, no options"},{"line_number":59,"context_line":"            if release.is_eol:"},{"line_number":60,"context_line":"                target \u003d str(release.version)"},{"line_number":61,"context_line":"                ref_type \u003d \u0027tag\u0027"},{"line_number":62,"context_line":"                break"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Insert into the beginning of the list so that redirections are"},{"line_number":65,"context_line":"        # master -\u003e juno"}],"source_content_type":"text/x-python","patch_set":1,"id":"fef051cd_479f9f6b","line":62,"range":{"start_line":30,"start_character":0,"end_line":62,"end_character":21},"in_reply_to":"59485813_843c5c4e","updated":"2024-02-05 16:33:48.000000000","message":"i could imagine these cases:\n\n* \u0027master\u0027 valid for releases in development\n* \u0027stable/\\*\u0027 valid for releases where we have a stable/\\* branch\n* \u0027unmaintained/\\*\u0027 valid for releases where we have a unmaintained/\\* branch\n* \u0027\\*-eol\u0027 valid where we don\u0027t have branches, but only the \\*-eol tag\n\ndoes this make sense?","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"}],"openstack_releases/tests/test_redirections.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"261248c8a228f67c35713ccfb97bc057de970899","unresolved":true,"context_lines":[{"line_number":128,"context_line":"        branches:"},{"line_number":129,"context_line":"          - name: stable/mitaka"},{"line_number":130,"context_line":"            location:"},{"line_number":131,"context_line":"              openstack/requirements: not_used"},{"line_number":132,"context_line":"        releases:"},{"line_number":133,"context_line":"          - projects:"},{"line_number":134,"context_line":"              - hash: not_used"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b310a7f_29e36da6","line":131,"updated":"2024-02-05 16:26:15.000000000","message":"this is a state that should not happen, adding the -eom tag should always be combined with creating the unmaintained/series branch.\n\nwhat makes the branch closed is that the -eol tag is added","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"83e809f23de651e17875037ab659a040c8b3b6d5","unresolved":true,"context_lines":[{"line_number":128,"context_line":"        branches:"},{"line_number":129,"context_line":"          - name: stable/mitaka"},{"line_number":130,"context_line":"            location:"},{"line_number":131,"context_line":"              openstack/requirements: not_used"},{"line_number":132,"context_line":"        releases:"},{"line_number":133,"context_line":"          - projects:"},{"line_number":134,"context_line":"              - hash: not_used"}],"source_content_type":"text/x-python","patch_set":1,"id":"885af9a9_dda87002","line":131,"in_reply_to":"2b310a7f_29e36da6","updated":"2024-02-05 16:28:34.000000000","message":"ahh, this is what i wrote too at the test case o:)","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"3bd87687519def2e7167ff87bf5986bf1d1acf14","unresolved":true,"context_lines":[{"line_number":282,"context_line":"        self.assertEqual([dict(code\u003d301, src\u003d\u0027mitaka\u0027, ref_type\u003d\u0027tag\u0027,"},{"line_number":283,"context_line":"                               dst\u003d\u0027mitaka-eom\u0027)],"},{"line_number":284,"context_line":"                         generate_constraints_redirections("},{"line_number":285,"context_line":"                             deliverables, self.SERIES_STATUS_DATA))"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def test_stable_eom_unmaintained(self):"},{"line_number":288,"context_line":"        deliverables \u003d FakeDeliverables(["}],"source_content_type":"text/x-python","patch_set":1,"id":"ac3d6373_c0b64d61","line":285,"updated":"2024-02-05 16:27:06.000000000","message":"I\u0027m not sure this is needed. When we decide to not continue an Unmaintained branch, then it will get a \u003cseries\u003e-eol tag at the HEAD of unmaintained/\u003cseries\u003e and then unmaintained/\u003cseries\u003e will be deleted.\n\nSo in short: i don\u0027t see such case when we would have a \u003cseries\u003e-eom tag, but don\u0027t have an unmaintained/\u003cseries\u003e branch nor a \u003cseries\u003e-eol tag. (either unmaintained branch or EOL tag should exist).","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"12000736a01f42557a562111790a56823399371c","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        self.assertEqual([dict(code\u003d301, src\u003d\u0027mitaka\u0027, ref_type\u003d\u0027tag\u0027,"},{"line_number":283,"context_line":"                               dst\u003d\u0027mitaka-eom\u0027)],"},{"line_number":284,"context_line":"                         generate_constraints_redirections("},{"line_number":285,"context_line":"                             deliverables, self.SERIES_STATUS_DATA))"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def test_stable_eom_unmaintained(self):"},{"line_number":288,"context_line":"        deliverables \u003d FakeDeliverables(["}],"source_content_type":"text/x-python","patch_set":1,"id":"7135551c_4528b8f9","line":285,"in_reply_to":"ac3d6373_c0b64d61","updated":"2024-02-23 14:53:02.000000000","message":"well, thinking a bit more on this: yes, this should not happen, but there are accidents, so better to cover every case.","commit_id":"42d32d075803b31edba5c0d31126ab9594dbcad3"}]}
