)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5e690bead2c509fe8dc387fcf9c71dae3da4089","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8d7500e0_5c70128f","updated":"2025-09-09 21:11:16.000000000","message":"This is very good. I just have a few comments inline. Hopefully they will be easy fixes.","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"}],"openstack/tests/functional/identity/v3/test_user.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5e690bead2c509fe8dc387fcf9c71dae3da4089","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class TestUser(base.BaseFunctionalTest):"},{"line_number":18,"context_line":"    \"\"\"Functional tests for User commands\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super().setUp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"        self.user_prefix \u003d self.getUniqueString(\u0027user\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ce01d4a_77876ef9","line":20,"range":{"start_line":18,"start_character":1,"end_line":20,"end_character":3},"updated":"2025-09-09 21:11:16.000000000","message":"These aren\u0027t commands. I\u0027d just drop this, personally.\n\n```suggestion\n    def setUp(self):\n```","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fa2568b719d8315412c602f34ae8964ce08b2d3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class TestUser(base.BaseFunctionalTest):"},{"line_number":18,"context_line":"    \"\"\"Functional tests for User commands\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super().setUp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"        self.user_prefix \u003d self.getUniqueString(\u0027user\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"06138ab1_5f513696","line":20,"range":{"start_line":18,"start_character":1,"end_line":20,"end_character":3},"in_reply_to":"7ce01d4a_77876ef9","updated":"2025-09-25 10:16:17.000000000","message":"Done","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5e690bead2c509fe8dc387fcf9c71dae3da4089","unresolved":true,"context_lines":[{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super().setUp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"        self.user_prefix \u003d self.getUniqueString(\u0027user\u0027)"},{"line_number":24,"context_line":"        self.username \u003d f\"{self.user_prefix}_test_user\""},{"line_number":25,"context_line":"        self.password \u003d \"test_password_123\"  # noqa: S105"},{"line_number":26,"context_line":"        self.email \u003d f\"{self.username}@example.com\""},{"line_number":27,"context_line":"        self.description \u003d \"Test user for functional testing\""}],"source_content_type":"text/x-python","patch_set":2,"id":"660c034e_f6147acd","line":24,"range":{"start_line":23,"start_character":0,"end_line":24,"end_character":55},"updated":"2025-09-09 21:11:16.000000000","message":"Couldn\u0027t you just use the unique string as-is?\n\n\n```suggestion\n        self.username \u003d self.getUniqueString(\u0027user\u0027)\n```","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fa2568b719d8315412c602f34ae8964ce08b2d3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super().setUp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"        self.user_prefix \u003d self.getUniqueString(\u0027user\u0027)"},{"line_number":24,"context_line":"        self.username \u003d f\"{self.user_prefix}_test_user\""},{"line_number":25,"context_line":"        self.password \u003d \"test_password_123\"  # noqa: S105"},{"line_number":26,"context_line":"        self.email \u003d f\"{self.username}@example.com\""},{"line_number":27,"context_line":"        self.description \u003d \"Test user for functional testing\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9e4ec9dd_fa7ea57e","line":24,"range":{"start_line":23,"start_character":0,"end_line":24,"end_character":55},"in_reply_to":"660c034e_f6147acd","updated":"2025-09-25 10:16:17.000000000","message":"Done","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5e690bead2c509fe8dc387fcf9c71dae3da4089","unresolved":true,"context_lines":[{"line_number":26,"context_line":"        self.email \u003d f\"{self.username}@example.com\""},{"line_number":27,"context_line":"        self.description \u003d \"Test user for functional testing\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _delete_users(self, user):"},{"line_number":30,"context_line":"        ret \u003d self.operator_cloud.identity.delete_user(user)"},{"line_number":31,"context_line":"        self.assertIsNone(ret)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"0d6cd87c_d56b6fc5","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":21},"updated":"2025-09-09 21:11:16.000000000","message":"nit\n\n\n```suggestion\n    def _delete_user(self, user):\n```","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fa2568b719d8315412c602f34ae8964ce08b2d3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        self.email \u003d f\"{self.username}@example.com\""},{"line_number":27,"context_line":"        self.description \u003d \"Test user for functional testing\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _delete_users(self, user):"},{"line_number":30,"context_line":"        ret \u003d self.operator_cloud.identity.delete_user(user)"},{"line_number":31,"context_line":"        self.assertIsNone(ret)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ac6ccae7_5c114cfd","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":21},"in_reply_to":"0d6cd87c_d56b6fc5","updated":"2025-09-25 10:16:17.000000000","message":"Done","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5e690bead2c509fe8dc387fcf9c71dae3da4089","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            email\u003dself.email,"},{"line_number":39,"context_line":"            description\u003dself.description,"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        self.assertIsInstance(user, _user.User)"},{"line_number":42,"context_line":"        self.assertIsNotNone(user.id)"},{"line_number":43,"context_line":"        self.assertEqual(self.username, user.name)"},{"line_number":44,"context_line":"        self.assertEqual(self.email, user.email)"},{"line_number":45,"context_line":"        self.assertEqual(self.description, user.description)"},{"line_number":46,"context_line":"        self.addCleanup(self._delete_users, user)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Update user"},{"line_number":49,"context_line":"        new_email \u003d f\"updated_{self.username}@example.com\""}],"source_content_type":"text/x-python","patch_set":2,"id":"68b67a2c_30d00c85","line":46,"range":{"start_line":41,"start_character":0,"end_line":46,"end_character":49},"updated":"2025-09-09 21:11:16.000000000","message":"You need to add the cleanup immediately after creation to ensure we don\u0027t leak anything in case any of these assertions fail\n\n\n```suggestion\n        self.addCleanup(self._delete_user, user)\n        self.assertIsInstance(user, _user.User)\n        self.assertIsNotNone(user.id)\n        self.assertEqual(self.username, user.name)\n        self.assertEqual(self.email, user.email)\n        self.assertEqual(self.description, user.description)\n```","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fa2568b719d8315412c602f34ae8964ce08b2d3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            email\u003dself.email,"},{"line_number":39,"context_line":"            description\u003dself.description,"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        self.assertIsInstance(user, _user.User)"},{"line_number":42,"context_line":"        self.assertIsNotNone(user.id)"},{"line_number":43,"context_line":"        self.assertEqual(self.username, user.name)"},{"line_number":44,"context_line":"        self.assertEqual(self.email, user.email)"},{"line_number":45,"context_line":"        self.assertEqual(self.description, user.description)"},{"line_number":46,"context_line":"        self.addCleanup(self._delete_users, user)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Update user"},{"line_number":49,"context_line":"        new_email \u003d f\"updated_{self.username}@example.com\""}],"source_content_type":"text/x-python","patch_set":2,"id":"0a3f4d08_7f8b39f2","line":46,"range":{"start_line":41,"start_character":0,"end_line":46,"end_character":49},"in_reply_to":"68b67a2c_30d00c85","updated":"2025-09-25 10:16:17.000000000","message":"Done","commit_id":"ae0b3f0ec19dcfff2c90a18aae0967825d3778a1"}]}
