)]}'
{"id":"openstack%2Fwatcher-dashboard~978309","triplet_id":"openstack%2Fwatcher-dashboard~master~Ie3a30ee0b4d3591a7bdad3f5f7bb744ceb559370","project":"openstack/watcher-dashboard","branch":"master","topic":"service-layer-refactor","attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-04-30 20:59:42.000000000","reason":"A robot voted negatively on a label"},"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-04-30 20:42:49.000000000","reason":"Vote got outdated and was removed: Code-Review+1"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"Ie3a30ee0b4d3591a7bdad3f5f7bb744ceb559370","subject":"test: improve coverage to 100% on api, client, errors, exceptions","status":"NEW","created":"2026-02-28 12:22:05.000000000","updated":"2026-04-30 20:59:42.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":18,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"16da4b58e95ee24b6bcd967a6898461a215bfd80","_number":978309,"virtual_id_number":978309,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-04-30 20:59:42.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"}],"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-02-28 12:24:44.000000000","updated_by":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"reviewer":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"state":"CC"},{"updated":"2026-02-28 12:37:25.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-02-28 13:56:01.000000000","updated_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"reviewer":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"state":"REVIEWER"}],"messages":[{"id":"1c29adce5920ab8aa2203aa30359a939731352d8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-02-28 12:22:05.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"bdebd8b120ad244ae79515b08728a546b01e9a22","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-02-28 12:24:44.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"15d8f5256c2869e14139a28221f55bd215d0b3aa","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-02-28 12:36:07.000000000","message":"Patch Set 1:\n\n(7 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/56a2a9f21d6f4ddea23f4a15b161880c\n\n- teim-code-review https://zuul.teim.app/t/main/build/1ab46cfbaefb4eb6b6b773395216131a : SUCCESS in 11m 13s","accounts_in_message":[],"_revision_number":1},{"id":"7d131bc70848e6d1079cac5e97c6dafe6e8909c9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-28 12:37:25.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/83d166f1e2444a59a5066ebd4920dd6f\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/57d928d2532a419bb8c211bf46d5188f : SUCCESS in 3m 28s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/5bd4c482a6f14bffab8bf82c26e875c2 : SUCCESS in 4m 50s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/98aa56fede8c47bb8053b45b96dbb04b : SUCCESS in 5m 19s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/124ed27271e74edd9a316918e1219225 : SUCCESS in 4m 54s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/e3fcbd19adcd42b395d9cc84de30f553 : SUCCESS in 4m 16s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/9fb5973cae524b79860f249da876064b : FAILURE in 5m 16s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/5ecfdf596029432682e51179f373138c : SUCCESS in 4m 39s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/80f12c99886c478f983a8b6a0ae472c7 : SUCCESS in 7m 15s","accounts_in_message":[],"_revision_number":1},{"id":"823689a75498e3a4d855ca32da5f59016a0f737a","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-02-28 13:56:01.000000000","message":"Patch Set 1: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/43e5aafc06ca475cb43f0d8025d4ba5d\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/c5fda43a8bf54fdf86dd89b17cca9279 : SUCCESS in 1h 32m 13s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/921fc99de184434a81d256c7029f6e90 : FAILURE in 37m 06s","accounts_in_message":[],"_revision_number":1},{"id":"542a09943164dff3a21c0b0ded0ceae962885b6b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-30 15:53:53.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"4476a91ba16a1e6527a4be8f0786e12bbef30f25","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-03-30 15:54:24.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"eddf5c7a684d093639f14b09788b37a6bacdbefd","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-03-30 16:02:58.000000000","message":"Patch Set 2: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/d3dd8942466f44ed8562235c226c1004\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/c8a23dff2f614fcdbcc4243b9bb0dd15 : FAILURE in 7m 35s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/65bc6990989947b9aa4239b62138b34f : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":2},{"id":"716847c1ff26e8251cbb279dff0f1ff486797158","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-30 16:07:33.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/4660ff4192fa411e9c6b94e44c4e49fc\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/7bdb0ea61f3d4c0b9789640575bac45f : SUCCESS in 4m 33s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/e1fe9f6bf7144c088422f934ae7f682d : SUCCESS in 3m 32s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/0f3eff55d716423e8d1f7827ed4d6c3c : SUCCESS in 5m 26s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/36a9091ec0ba48808c0461a944f18402 : SUCCESS in 6m 48s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/8f142972407d40d1848448762b885345 : SUCCESS in 4m 55s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/47a3d52a8fa74055afa3d707518552fe : FAILURE in 7m 17s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/99c4277a74cf42c1ab3c6cfb0611c2e7 : SUCCESS in 5m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4a8c1569783e4bc4bd4d1760430b2e12 : FAILURE in 5m 26s","accounts_in_message":[],"_revision_number":2},{"id":"305be51ca58870f0d60b47c75de2bb2a4cf378b9","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-03-30 16:18:36.000000000","message":"Patch Set 2:\n\n(4 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/c68a776a68344814b73b41c553af9059\n\n- teim-code-review https://zuul.teim.app/t/main/build/ec88d568b0254978a2ee958e9f8bc8d6 : SUCCESS in 9m 47s","accounts_in_message":[],"_revision_number":2},{"id":"b45c8237d1a7b49dfd1ed199fdf6f84ba80c9d65","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-04 00:52:13.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1\n","accounts_in_message":[],"_revision_number":3},{"id":"3963e3e5332f4919edab0f9a45f434ee7d24470c","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-04-04 00:53:56.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"9a58f6627a44f12292a2497e72dde20bd367aa23","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-04 01:07:19.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/63e21ecbe4b9438aa6e7a9d3aac2e6d9\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/646c589617564230804cfd5b0ec9d3b0 : FAILURE in 4m 24s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/0dd6c89a664942269f2af3117defe772 : FAILURE in 4m 10s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/843db6e086be4d349195d3ec0303eb8a : FAILURE in 4m 23s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c29642568c0341cbbb86fb9a17e55194 : FAILURE in 5m 23s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/7870c416b2f3483a85a7832c05f43021 : FAILURE in 4m 16s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/48cac1f5e95e43439501ea2314e0fc54 : FAILURE in 7m 03s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/860d071f31024434a47c6e0ccddf1687 : FAILURE in 4m 31s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/69a6f7e644da43699b17e4bdbf5b1a08 : SUCCESS in 7m 33s\n\nWarning:\n  Comments left for invalid file watcher_dashboard/api/watcher.py\n  Comments left for invalid file watcher_dashboard/config.py","accounts_in_message":[],"_revision_number":3},{"id":"c2a398379ffe7d0dd0bb54af97d44436964ece52","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-04-04 02:21:43.000000000","message":"Patch Set 3:\n\n(7 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/7375cfe419d04309a4e038325349e4d8\n\n- teim-code-review https://zuul.teim.app/t/main/build/400c30aa1df0423eb9409d742863cee7 : SUCCESS in 7m 47s","accounts_in_message":[],"_revision_number":3},{"id":"d698f175462818b8ede791e1c5957a7a0f80c42e","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-04-04 04:04:51.000000000","message":"Patch Set 3: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/7744ab39ac064556a7e779f8c2219610\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/2b0e8e77ebb945c396a6c039aab39081 : SUCCESS in 3h 10m 35s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/8595b66670db48918ef5885805cb4fcf : SUCCESS in 2h 13m 17s","accounts_in_message":[],"_revision_number":3},{"id":"18a62585391c421f103718e5c0b21972da6afd10","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-30 20:42:49.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"16da4b58e95ee24b6bcd967a6898461a215bfd80","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-30 20:59:42.000000000","message":"Patch Set 4: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/8c154383a3544ecfb47bb7f9a2eae659\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/2ec0393ebac04241adb79a20d967e3a1 : FAILURE in 4m 07s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/10b933b73e2045e3b27a33d126c74fc8 : FAILURE in 4m 56s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/0795812cabe749cc82d52611177a5140 : FAILURE in 5m 58s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9c29f1b21c804fad882793c24af1fac5 : FAILURE in 5m 12s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/61bc3ead148d4466a697d488cee4ad12 : FAILURE in 3m 36s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/bf3fd8ec038345a8bbd1bcdfb2478e3a : FAILURE in 8m 56s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/42c167ae810547389b57f955f1f070fb : FAILURE in 4m 12s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bb4ba337e081496d8c6e479f27a6c877 : SUCCESS in 5m 59s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"605192c405fa672c78e4ba2be43d0ab5f9670367","revisions":{"c0b5ccb2483467a5adb8a785572bf023597124c5":{"kind":"REWORK","_number":1,"created":"2026-02-28 12:22:05.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/09/978309/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/09/978309/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/1"}}},"commit":{"parents":[{"commit":"a95d0c122d64785ed019ac2a85e16d7a0d14eed4","subject":"docs(A4-1): update contributor docs to reflect completed phases","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/a95d0c122d64785ed019ac2a85e16d7a0d14eed4"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 23:19:16.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:20:26.000000000","tz":0},"subject":"test: improve coverage to 100% on api, client, errors, exceptions","message":"test: improve coverage to 100% on api, client, errors, exceptions\n\nAdd tests covering previously uncovered paths:\n\n- test_errors.py (new): handle_errors RuntimeError (no request arg),\n  explicit request_arg, _error_handle\u003dFalse bypass, exception handler\n  body with horizon.exceptions.handle call and error_default return,\n  and _error_message/_error_redirect override kwargs.\n- test_watcher.py: Action.get, Action.delete, EfficacyIndicator.__init__\n  (both populated and empty-dict variants), insert_watcher_policy_file\n  (absent and already-registered branches), and id property on all six\n  wrapper classes (Audit, AuditTemplate, ActionPlan, Action, Goal, Strategy).\n- test_client.py: WatcherClientFunctionTests exercises the real\n  watcherclient() body with all dependencies patched (default microversion\n  and explicit api_version); WatcherGetClientTests covers get_client()\n  with normal and SSL-overridden configs; WatcherExceptionsModuleTests\n  imports common.exceptions to exercise module-level constant bindings.\n\nCoverage on targeted modules:\n  api/watcher.py        87% -\u003e 100%\n  common/client.py      71% -\u003e 100%\n  common/exceptions.py   0% -\u003e 100%\n  utils/errors.py       78% -\u003e 100%\n  Overall               79% -\u003e 82%\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Ie3a30ee0b4d3591a7bdad3f5f7bb744ceb559370\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/c0b5ccb2483467a5adb8a785572bf023597124c5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/c0b5ccb2483467a5adb8a785572bf023597124c5"}]},"branch":"refs/heads/master"},"99c2242ccda249964a3fe56346a20473ddb84e49":{"kind":"REWORK","_number":2,"created":"2026-03-30 15:53:53.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/09/978309/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/09/978309/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/2"}}},"commit":{"parents":[{"commit":"53604025652e1885d88f574ede324d3199871f76","subject":"feat(A5-2): add mypy strict configuration and tox target","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/53604025652e1885d88f574ede324d3199871f76"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 23:19:16.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-03-30 15:01:16.000000000","tz":60},"subject":"test: improve coverage to 100% on api, client, errors, exceptions","message":"test: improve coverage to 100% on api, client, errors, exceptions\n\nAdd tests covering previously uncovered paths:\n\n- test_errors.py (new): handle_errors RuntimeError (no request arg),\n  explicit request_arg, _error_handle\u003dFalse bypass, exception handler\n  body with horizon.exceptions.handle call and error_default return,\n  and _error_message/_error_redirect override kwargs.\n- test_watcher.py: Action.get, Action.delete, EfficacyIndicator.__init__\n  (both populated and empty-dict variants), insert_watcher_policy_file\n  (absent and already-registered branches), and id property on all six\n  wrapper classes (Audit, AuditTemplate, ActionPlan, Action, Goal, Strategy).\n- test_client.py: WatcherClientFunctionTests exercises the real\n  watcherclient() body with all dependencies patched (default microversion\n  and explicit api_version); WatcherGetClientTests covers get_client()\n  with normal and SSL-overridden configs; WatcherExceptionsModuleTests\n  imports common.exceptions to exercise module-level constant bindings.\n\nCoverage on targeted modules:\n  api/watcher.py        87% -\u003e 100%\n  common/client.py      71% -\u003e 100%\n  common/exceptions.py   0% -\u003e 100%\n  utils/errors.py       78% -\u003e 100%\n  Overall               79% -\u003e 82%\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Ie3a30ee0b4d3591a7bdad3f5f7bb744ceb559370\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/99c2242ccda249964a3fe56346a20473ddb84e49"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/99c2242ccda249964a3fe56346a20473ddb84e49"}]},"branch":"refs/heads/master"},"1dd5fbf425bc742fb11a1c948cb6cbd0e0554340":{"kind":"REWORK","_number":3,"created":"2026-04-04 00:52:13.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/09/978309/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/09/978309/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/3"}}},"commit":{"parents":[{"commit":"97b556b078ec9abf8434fac2ec39be57b49af8b6","subject":"feat(A5-2): add mypy strict configuration and tox target","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/97b556b078ec9abf8434fac2ec39be57b49af8b6"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 23:19:16.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-04 00:49:03.000000000","tz":60},"subject":"test: improve coverage to 100% on api, client, errors, exceptions","message":"test: improve coverage to 100% on api, client, errors, exceptions\n\nAdd tests covering previously uncovered paths:\n\n- test_errors.py (new): handle_errors RuntimeError (no request arg),\n  explicit request_arg, _error_handle\u003dFalse bypass, exception handler\n  body with horizon.exceptions.handle call and error_default return,\n  and _error_message/_error_redirect override kwargs.\n- test_watcher.py: Action.get, Action.delete, EfficacyIndicator.__init__\n  (both populated and empty-dict variants), insert_watcher_policy_file\n  (absent and already-registered branches), and id property on all six\n  wrapper classes (Audit, AuditTemplate, ActionPlan, Action, Goal, Strategy).\n- test_client.py: WatcherClientFunctionTests exercises the real\n  watcherclient() body with all dependencies patched (default microversion\n  and explicit api_version); WatcherGetClientTests covers get_client()\n  with normal and SSL-overridden configs; WatcherExceptionsModuleTests\n  imports common.exceptions to exercise module-level constant bindings.\n\nCoverage on targeted modules:\n  api/watcher.py        87% -\u003e 100%\n  common/client.py      71% -\u003e 100%\n  common/exceptions.py   0% -\u003e 100%\n  utils/errors.py       78% -\u003e 100%\n  Overall               79% -\u003e 82%\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Ie3a30ee0b4d3591a7bdad3f5f7bb744ceb559370\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/1dd5fbf425bc742fb11a1c948cb6cbd0e0554340"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/1dd5fbf425bc742fb11a1c948cb6cbd0e0554340"}]},"branch":"refs/heads/master"},"605192c405fa672c78e4ba2be43d0ab5f9670367":{"kind":"REWORK","_number":4,"created":"2026-04-30 20:42:49.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/09/978309/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/09/978309/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/09/978309/4"}}},"commit":{"parents":[{"commit":"d083e7cf305601eabd070eafa32a560753dd2eb3","subject":"Add mypy tox target with application-grade type check settings","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/d083e7cf305601eabd070eafa32a560753dd2eb3"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 23:19:16.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-30 20:27:43.000000000","tz":60},"subject":"test: improve coverage to 100% on api, client, errors, exceptions","message":"test: improve coverage to 100% on api, client, errors, exceptions\n\nAdd tests covering previously uncovered paths:\n\n- test_errors.py (new): handle_errors RuntimeError (no request arg),\n  explicit request_arg, _error_handle\u003dFalse bypass, exception handler\n  body with horizon.exceptions.handle call and error_default return,\n  and _error_message/_error_redirect override kwargs.\n- test_watcher.py: Action.get, Action.delete, EfficacyIndicator.__init__\n  (both populated and empty-dict variants), insert_watcher_policy_file\n  (absent and already-registered branches), and id property on all six\n  wrapper classes (Audit, AuditTemplate, ActionPlan, Action, Goal, Strategy).\n- test_client.py: WatcherClientFunctionTests exercises the real\n  watcherclient() body with all dependencies patched (default microversion\n  and explicit api_version); WatcherGetClientTests covers get_client()\n  with normal and SSL-overridden configs; WatcherExceptionsModuleTests\n  imports common.exceptions to exercise module-level constant bindings.\n\nCoverage on targeted modules:\n  api/watcher.py        87% -\u003e 100%\n  common/client.py      71% -\u003e 100%\n  common/exceptions.py   0% -\u003e 100%\n  utils/errors.py       78% -\u003e 100%\n  Overall               79% -\u003e 82%\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Ie3a30ee0b4d3591a7bdad3f5f7bb744ceb559370\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/605192c405fa672c78e4ba2be43d0ab5f9670367"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/605192c405fa672c78e4ba2be43d0ab5f9670367"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
