)]}'
{"neutron/tests/unit/db/migration/test_cli.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"885e66fb46f734587bf6cc5aa9d37979c2378a38","unresolved":true,"context_lines":[{"line_number":65,"context_line":"                        # check that is present in the ``NEUTRON_MILESTONES``"},{"line_number":66,"context_line":"                        # list."},{"line_number":67,"context_line":"                        neutron_milestone \u003d neutron_milestone.pop()"},{"line_number":68,"context_line":"                        neutron_milestones.remove(neutron_milestone)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Once all expand migration scripts have been read, all migration"},{"line_number":71,"context_line":"        # milestones must be removed from the ``NEUTRON_MILESTONES`` list."}],"source_content_type":"text/x-python","patch_set":3,"id":"855c7e6d_de3eb9fb","line":68,"updated":"2025-03-20 03:43:07.000000000","message":"So my only complaint is that if I add the duplicate back (like from the parent patch), the test does fail, but it\u0027s a KeyError, not an assert failure or self.fail(), etc. Could probably make a small tweak to make it cleaner:\n\nif neutron_milestone not in neutron_milestones:\n    self.fail(\u0027Duplicate milestone found: %s\u0027 % neutron_milestone)\n\nThis would work too, but the failure doesn\u0027t make the reason obvious:\n\nself.assertIn(neutron_milestone, neutron_milestones)\n\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n\n      File \"/home/bhaley/git/neutron.dev/neutron/tests/base.py\", line 178, in func\n    return f(self, *args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^\n\n      File \"/home/bhaley/git/neutron.dev/neutron/tests/unit/db/migration/test_cli.py\", line 68, in test_check_all_milestones_are_tagged\n    neutron_milestones.remove(neutron_milestone)\n\n    KeyError: \u0027yoga\u0027","commit_id":"bc66bee66959ada3dcdf67e6fcb3cc5f73952f52"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c837c361e4f54b48697af10a5c721c00714b92ac","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                        # check that is present in the ``NEUTRON_MILESTONES``"},{"line_number":66,"context_line":"                        # list."},{"line_number":67,"context_line":"                        neutron_milestone \u003d neutron_milestone.pop()"},{"line_number":68,"context_line":"                        neutron_milestones.remove(neutron_milestone)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Once all expand migration scripts have been read, all migration"},{"line_number":71,"context_line":"        # milestones must be removed from the ``NEUTRON_MILESTONES`` list."}],"source_content_type":"text/x-python","patch_set":3,"id":"7796d76c_3eaef559","line":68,"in_reply_to":"855c7e6d_de3eb9fb","updated":"2025-03-20 06:37:04.000000000","message":"Done","commit_id":"bc66bee66959ada3dcdf67e6fcb3cc5f73952f52"}]}
