)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b44b6ccc96c5820c27fdae5155379a7f138adf95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"33103221_7f21d57e","updated":"2026-06-10 13:45:30.000000000","message":"I removed the `ast` logic as it felt unnecessarily complex and did not appear to be necessary based on the bug report. Please let me know if there is a reason this is required.","commit_id":"5ca704470ca83718d9bd617a3181dce6e967390c"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"e0265bc4e0c9a2d761c811078cf3700059895c85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3473c649_55549f68","in_reply_to":"33103221_7f21d57e","updated":"2026-06-29 05:58:16.000000000","message":"Hi, @stephenfin@redhat.com, I wanted to validate the retry parameter more strictly. So I proposed patch1 to trigger an error if the parameter does not properly represent the KazooRetry class, using `ast`.","commit_id":"5ca704470ca83718d9bd617a3181dce6e967390c"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"9e169156d77c0e875ca9b9a033b4baf072cfd702","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b6cd2a64_0047b024","updated":"2026-09-21 11:07:26.000000000","message":"recheck","commit_id":"9f0186a8c0017f59a4861e97452e174b685e0749"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"05e10d4243ce37005db9bc3108185904d82e64c6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"98d005e7_7ced50c0","updated":"2026-10-01 09:01:34.000000000","message":"@stephenfin@redhat.com, I think that the validation you fixed would be sufficient, so I only added some new test code for validation. Can you please check?","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"77d2ca389d30e982c6a00dbb2f5cb9f6104fb22e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5a03ab24_d4f682d6","in_reply_to":"98d005e7_7ced50c0","updated":"2026-10-22 09:59:55.000000000","message":"Done","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"8c83c62a6069567a8acaf5509fec615058d7a1bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9ff0c8f8_0f0b40d3","updated":"2026-10-19 10:15:29.000000000","message":"@stephenfin@redhat.com, I fixed test code as you commented.\nAnd after tenacity in upper-constraints.txt has upgraded, pep8 is failing, so I added Depends-on https://review.opendev.org/c/openstack/tooz/+/1011053. Please check this change too.","commit_id":"533ec1a96152ecc4b921995b3cb2fad2bec40ed8"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"3714fc76ca7eca48757341a4e52195336c27cae1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"154962bf_06246712","updated":"2026-10-22 12:26:01.000000000","message":"Thank you @kajinamit@oss.nttdata.com and @stephenfin@redhat.com. I rebased the code. Could you please proceed the merge process after check?","commit_id":"0900f673ed56ccb4656983537bca7c41bd90049b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25a2483a70427c49f16482e6229fb68fb8cbb1bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"71016b06_3ebd29a3","in_reply_to":"154962bf_06246712","updated":"2026-10-22 15:19:10.000000000","message":"Done","commit_id":"0900f673ed56ccb4656983537bca7c41bd90049b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6b136809a064084b21f986179c0893553e20d29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"78620a01_95fb1405","updated":"2026-10-22 14:10:07.000000000","message":"Fixed the trivial rebase snafu (an import name change). @kajinamit@oss.nttdata.com was +2 before the rebase, so I\u0027m carrying his +2 forward.","commit_id":"215c8d0d970570e7b0ec0af758c6b189f1c10454"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"f489fb7085cb9e726b9316e0be41ad7621f1c73d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"e456b83f_65529069","in_reply_to":"78620a01_95fb1405","updated":"2026-10-22 14:17:07.000000000","message":"@stephenfin@redhat.com I\u0027m sorry, I thought that pep8 is also failed, so I uploaded a new patch..","commit_id":"215c8d0d970570e7b0ec0af758c6b189f1c10454"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"13771fea22431aaf66aff810c36e52a92aa6a65d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"1690c2e1_eec9ba94","updated":"2026-10-22 18:01:14.000000000","message":"recheck etcd3gw test is not relevant.","commit_id":"44b8fc007161e2ac9a7001d8894255767ddd0eca"}],"tooz/drivers/zookeeper.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f47f1fea36f8dabaac57f46900e4578767425715","unresolved":true,"context_lines":[{"line_number":687,"context_line":"            except json.JSONDecodeError:"},{"line_number":688,"context_line":"                pass"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"        raise ValueError(f\"Not Supported Retry parameter Type: {type(retry)}\")"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def stand_down_group_leader(self, group_id: bytes) -\u003e bool:"},{"line_number":693,"context_line":"        if group_id in self._leader_locks:"}],"source_content_type":"text/x-python","patch_set":10,"id":"8805e214_b2400028","line":690,"range":{"start_line":690,"start_character":14,"end_line":690,"end_character":24},"updated":"2026-10-22 09:51:37.000000000","message":"We should probably raise TypeError for unsupported types here. It\u0027s also confusing that we raise this message when retry is str but isn\u0027t a valid json string. I\u0027ll fix this by my end soon.","commit_id":"f4d3274cb981f0bd4f43264175451ae1622ec0ce"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"08c5ee0672045956e2f37c981e06b196f62c5ccf","unresolved":false,"context_lines":[{"line_number":687,"context_line":"            except json.JSONDecodeError:"},{"line_number":688,"context_line":"                pass"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"        raise ValueError(f\"Not Supported Retry parameter Type: {type(retry)}\")"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def stand_down_group_leader(self, group_id: bytes) -\u003e bool:"},{"line_number":693,"context_line":"        if group_id in self._leader_locks:"}],"source_content_type":"text/x-python","patch_set":10,"id":"4f9bb61f_104edf23","line":690,"range":{"start_line":690,"start_character":14,"end_line":690,"end_character":24},"in_reply_to":"8805e214_b2400028","updated":"2026-10-22 09:53:33.000000000","message":"Done","commit_id":"f4d3274cb981f0bd4f43264175451ae1622ec0ce"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0dd22e05b471a3bb4ffb953f0cab2b6e74e9b6f2","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                    )"},{"line_number":692,"context_line":"                return kazoo_retry.KazooRetry(**parsed)"},{"line_number":693,"context_line":"            except json.JSONDecodeError:"},{"line_number":694,"context_line":"                raise ValueError(f\"Retry parameter is not a valid JSON string\")"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        raise TypeError(f\"Unsupported retry parameter type: {type(retry)}\")"},{"line_number":697,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ef5c1bf3_01bf44d1","line":694,"range":{"start_line":694,"start_character":33,"end_line":694,"end_character":34},"updated":"2026-10-22 14:43:14.000000000","message":"This caused pep8 error.","commit_id":"64e732a9a59e2cfc8d257b3fb166f13de834c639"}],"tooz/tests/drivers/test_zookeeper.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"069e898212d16a217f7b0710c5c1a135ff6368da","unresolved":true,"context_lines":[{"line_number":23,"context_line":"@ddt.ddt"},{"line_number":24,"context_line":"class TestZookeeperRetryParam(testcase.TestCase):"},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super().setUp()"},{"line_number":27,"context_line":"        patcher \u003d mock.patch(\u0027tooz.drivers.zookeeper.client.KazooClient\u0027)"},{"line_number":28,"context_line":"        self.kazoo_client \u003d patcher.start()"},{"line_number":29,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":30,"context_line":"        self.driver \u003d zookeeper.KazooDriver("},{"line_number":31,"context_line":"            tooz.tests.get_random_uuid(),"},{"line_number":32,"context_line":"            parse.urlparse(\u0027zookeeper://localhost:2181\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5c53a0c2_27868bc0","line":29,"range":{"start_line":26,"start_character":23,"end_line":29,"end_character":37},"updated":"2026-10-02 12:53:51.000000000","message":"Can we use `fixtures.MockPatch` for this instead?\n\n```suggestion\n        super().setUp()\n        self.kazoo_client \u003d fixtures.MockPatch(\u0027tooz.drivers.zookeeper.client.KazooClient\u0027)\n```\n\nShould do the trick.","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"2311b13a4f43fb87f25697223307535102bf488a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"@ddt.ddt"},{"line_number":24,"context_line":"class TestZookeeperRetryParam(testcase.TestCase):"},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super().setUp()"},{"line_number":27,"context_line":"        patcher \u003d mock.patch(\u0027tooz.drivers.zookeeper.client.KazooClient\u0027)"},{"line_number":28,"context_line":"        self.kazoo_client \u003d patcher.start()"},{"line_number":29,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":30,"context_line":"        self.driver \u003d zookeeper.KazooDriver("},{"line_number":31,"context_line":"            tooz.tests.get_random_uuid(),"},{"line_number":32,"context_line":"            parse.urlparse(\u0027zookeeper://localhost:2181\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"8d150347_05ceac05","line":29,"range":{"start_line":26,"start_character":23,"end_line":29,"end_character":37},"in_reply_to":"5c53a0c2_27868bc0","updated":"2026-10-19 04:21:26.000000000","message":"Done","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"069e898212d16a217f7b0710c5c1a135ff6368da","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _make_client(self, options):"},{"line_number":37,"context_line":"        self.kazoo_client.reset_mock()"},{"line_number":38,"context_line":"        self.driver._make_client("},{"line_number":39,"context_line":"            parse.urlparse(\u0027zookeeper://localhost:2181\u0027), options"},{"line_number":40,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"c2fd58f2_b4204642","line":37,"updated":"2026-10-02 12:53:51.000000000","message":"A new mock will be created on each test as `setUp` runs per test. This shouldn\u0027t be necessary unless you call this multiple times in a single test, which you don\u0027t.","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"2311b13a4f43fb87f25697223307535102bf488a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _make_client(self, options):"},{"line_number":37,"context_line":"        self.kazoo_client.reset_mock()"},{"line_number":38,"context_line":"        self.driver._make_client("},{"line_number":39,"context_line":"            parse.urlparse(\u0027zookeeper://localhost:2181\u0027), options"},{"line_number":40,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"de75c191_e3961536","line":37,"in_reply_to":"c2fd58f2_b4204642","updated":"2026-10-19 04:21:26.000000000","message":"Done","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"069e898212d16a217f7b0710c5c1a135ff6368da","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        self.assertIsInstance(result, kazoo_retry.KazooRetry)"},{"line_number":60,"context_line":"        self.assertEqual(7, result.max_tries)"},{"line_number":61,"context_line":"        self.assertEqual(3, result.backoff)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @ddt.data(\u0027[1, 2, 3]\u0027, \u0027\"text\"\u0027, \u002710\u0027)"},{"line_number":64,"context_line":"    def test_validate_retry_param_json_not_dict(self, value):"},{"line_number":65,"context_line":"        self.assertRaises("},{"line_number":66,"context_line":"            ValueError, self.driver._validate_retry_param, value"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_validate_retry_param_invalid_json_string(self):"},{"line_number":70,"context_line":"        self.assertRaises("},{"line_number":71,"context_line":"            ValueError, self.driver._validate_retry_param, \u0027not-json\u0027"},{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @ddt.data(10, 1.5, [\u0027max_tries\u0027], object())"},{"line_number":75,"context_line":"    def test_validate_retry_param_unsupported_type(self, value):"},{"line_number":76,"context_line":"        self.assertRaises("},{"line_number":77,"context_line":"            ValueError, self.driver._validate_retry_param, value"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_validate_retry_param_unknown_key(self):"},{"line_number":81,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":4,"id":"f108263a_ea8cf614","line":78,"range":{"start_line":62,"start_character":1,"end_line":78,"end_character":9},"updated":"2026-10-02 12:53:51.000000000","message":"Can we avoid adding new users of `ddt`? This shouldn\u0027t be necessary with `subTest`:\n\n```suggestion\n\n    def test_validate_retry_param_json_not_dict(self):\n        for value in [\u0027[1, 2, 3]\u0027, \u0027\"text\"\u0027, \u002710\u0027]:\n            with self.subTest(f\u0027invalid value: {value}\u0027):\n                self.assertRaises(\n                    ValueError, self.driver._validate_retry_param, value\n                )\n\n    def test_validate_retry_param_invalid_json_string(self):\n        self.assertRaises(\n            ValueError, self.driver._validate_retry_param, \u0027not-json\u0027\n        )\n\n    def test_validate_retry_param_unsupported_type(self):\n        for value in [10, 1.5, [\u0027max_tries\u0027], object()]:\n            with self.subTest(f\u0027invalid value: {value}\u0027):\n                self.assertRaises(\n                    ValueError, self.driver._validate_retry_param, value\n                )\n```","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"2311b13a4f43fb87f25697223307535102bf488a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.assertIsInstance(result, kazoo_retry.KazooRetry)"},{"line_number":60,"context_line":"        self.assertEqual(7, result.max_tries)"},{"line_number":61,"context_line":"        self.assertEqual(3, result.backoff)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @ddt.data(\u0027[1, 2, 3]\u0027, \u0027\"text\"\u0027, \u002710\u0027)"},{"line_number":64,"context_line":"    def test_validate_retry_param_json_not_dict(self, value):"},{"line_number":65,"context_line":"        self.assertRaises("},{"line_number":66,"context_line":"            ValueError, self.driver._validate_retry_param, value"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_validate_retry_param_invalid_json_string(self):"},{"line_number":70,"context_line":"        self.assertRaises("},{"line_number":71,"context_line":"            ValueError, self.driver._validate_retry_param, \u0027not-json\u0027"},{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @ddt.data(10, 1.5, [\u0027max_tries\u0027], object())"},{"line_number":75,"context_line":"    def test_validate_retry_param_unsupported_type(self, value):"},{"line_number":76,"context_line":"        self.assertRaises("},{"line_number":77,"context_line":"            ValueError, self.driver._validate_retry_param, value"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_validate_retry_param_unknown_key(self):"},{"line_number":81,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":4,"id":"016b5599_de2276c4","line":78,"range":{"start_line":62,"start_character":1,"end_line":78,"end_character":9},"in_reply_to":"f108263a_ea8cf614","updated":"2026-10-19 04:21:26.000000000","message":"Done","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"069e898212d16a217f7b0710c5c1a135ff6368da","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d7cab05e_959974d3","line":133,"range":{"start_line":87,"start_character":0,"end_line":133,"end_character":1},"updated":"2026-10-02 12:53:51.000000000","message":"I think all of these can be dropped? They are ultimately (re-)testing `_validate_retry_param` under the hoods. Maybe just add a single test that ensures we call `_validate_retry_param` for both `connection_retry` and `command_retry`?","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":36741,"name":"Eunkyung Kim","display_name":"eunkyung","email":"ek121.kim@samsung.com","username":"eunkyung"},"change_message_id":"2311b13a4f43fb87f25697223307535102bf488a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"486dd75b_ea620ab8","line":133,"range":{"start_line":87,"start_character":0,"end_line":133,"end_character":1},"in_reply_to":"d7cab05e_959974d3","updated":"2026-10-19 04:21:26.000000000","message":"Done","commit_id":"6796d5b6c4ba0131f39f018de5702415aff767cb"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ae9911fe29006601450ac9d69042a94a8e4c1014","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":30,"context_line":"        self.driver \u003d zookeeper.KazooDriver("},{"line_number":31,"context_line":"            tooz.tests.get_random_uuid(),"},{"line_number":32,"context_line":"            parse.urlparse(\u0027zookeeper://localhost:2181\u0027),"},{"line_number":33,"context_line":"            {},"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da05731e_5691a622","line":32,"updated":"2026-10-02 02:40:40.000000000","message":"pep8: error: Argument 2 to \"KazooDriver\" has incompatible type \"ParseResult\"; expected \"SplitResult\"  [arg-type]","commit_id":"13be5959294fc0e084f636d2cdb9d8349676392b"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ae9911fe29006601450ac9d69042a94a8e4c1014","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def _make_client(self, options):"},{"line_number":37,"context_line":"        self.kazoo_client.reset_mock()"},{"line_number":38,"context_line":"        self.driver._make_client("},{"line_number":39,"context_line":"            parse.urlparse(\u0027zookeeper://localhost:2181\u0027), options"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        return self.kazoo_client.call_args.kwargs"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"003d0496_77900340","line":39,"updated":"2026-10-02 02:40:40.000000000","message":"pep8: error: Argument 1 to \"_make_client\" of \"KazooDriver\" has incompatible type \"ParseResult\"; expected \"SplitResult\"  [arg-type]","commit_id":"13be5959294fc0e084f636d2cdb9d8349676392b"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3f0b8793a58d553e958cbe6b33abb60e0a0514e8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        )"},{"line_number":29,"context_line":"        self.driver \u003d zookeeper.KazooDriver("},{"line_number":30,"context_line":"            tooz.tests.get_random_uuid(),"},{"line_number":31,"context_line":"            parse.urlsplit(\u0027zookeeper://localhost:2181\u0027),"},{"line_number":32,"context_line":"            {},"},{"line_number":33,"context_line":"        )"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7457e250_6823d16d","line":31,"updated":"2026-10-19 05:42:00.000000000","message":"pep8: error: Argument 2 to \"KazooDriver\" has incompatible type \"urllib.parse.SplitResult\"; expected \"oslo_utils.netutils.SplitResult\"  [arg-type]","commit_id":"29129f9711011fbc49cf9eedb33f6d6703fa14e6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3f0b8793a58d553e958cbe6b33abb60e0a0514e8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            fixtures.MockPatchObject(self.driver, \u0027_validate_retry_param\u0027)"},{"line_number":84,"context_line":"        ).mock"},{"line_number":85,"context_line":"        self.driver._make_client("},{"line_number":86,"context_line":"            parse.urlsplit(\u0027zookeeper://localhost:2181\u0027),"},{"line_number":87,"context_line":"            {"},{"line_number":88,"context_line":"                \u0027connection_retry\u0027: \u0027{\"max_tries\": 3}\u0027,"},{"line_number":89,"context_line":"                \u0027command_retry\u0027: {\u0027max_tries\u0027: 4},"}],"source_content_type":"text/x-python","patch_set":6,"id":"ca029eb5_e00ca849","line":86,"updated":"2026-10-19 05:42:00.000000000","message":"pep8: error: Argument 1 to \"_make_client\" of \"KazooDriver\" has incompatible type \"urllib.parse.SplitResult\"; expected \"oslo_utils.netutils.SplitResult\"  [arg-type]","commit_id":"29129f9711011fbc49cf9eedb33f6d6703fa14e6"}]}
