)]}'
{"id":"openstack%2Fkeystoneauth~979506","triplet_id":"openstack%2Fkeystoneauth~master~Ic8f81e2df7c310f52e5b88dda94762bc0a2b7948","project":"openstack/keystoneauth","branch":"master","topic":"linter-sync","hashtags":[],"change_id":"Ic8f81e2df7c310f52e5b88dda94762bc0a2b7948","subject":"ruff: Configure hacking as external linter","status":"MERGED","created":"2026-03-09 11:45:08.000000000","updated":"2026-03-09 15:08:10.000000000","submitted":"2026-03-09 15:06:18.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"979506-linter-sync","meta_rev_id":"1099ca7821afa6a0c7f0c303840b08f7cdbb3e43","_number":979506,"virtual_id_number":979506,"owner":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-09 15:06:18.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":2,"date":"2026-03-09 12:48:19.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":{"approved":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":1,"date":"2026-03-09 12:48:19.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-09 14:08:20.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"}],"messages":[{"id":"dc09cdd09e685b224c6290a19062aaaae4cd0a6c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-09 11:45:08.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"ec9876504b1f516c4a23fc28edbcf34477941717","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-09 12:48:19.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"1ac0772360283972b661a5fc019cae415b7ad791","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-09 14:08:20.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d16ad516f26a456299802349bff9cbca\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/929b6f33e6884d2b81486fc273903e2c : SUCCESS in 2m 47s\n- requirements-check https://zuul.opendev.org/t/openstack/build/4e95f881ac6848db8c0f6d5914f08a36 : SUCCESS in 3m 32s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/a0ed2e3a87ab4bb7a87b3e3c008a792f : SUCCESS in 1h 57m 25s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f6a3939620cb4031aff38bfce01be07a : SUCCESS in 3m 53s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/0d769362d2bb42c4aaa51f5e2b9f0ae4 : SUCCESS in 3m 52s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3211e3a6d18a442086b0faf0855f578f : SUCCESS in 4m 51s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/3b9bb7b0b8564d01869f8e4c412174d7 : SUCCESS in 5m 38s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/5b63684060994bf48b0be3ae0ffabcbb : SUCCESS in 1h 05m 24s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/e029edc881ec47f1915115a2e203ab13 : SUCCESS in 4m 57s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/1ef0ba9c112543f68d628124259d745c : SUCCESS in 4m 13s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/107e3c2d31d0482db4523b8e833ff97a : SUCCESS in 9m 10s","accounts_in_message":[],"_revision_number":1},{"id":"5dcfe7dd575e01735d1c3ffe31118b36e9a73c99","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-09 14:08:50.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"780233f492d3158e5f7a64694df65dc145ce2477","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-09 15:06:18.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d184e4f8692c47f5add159506ad186b2\n\n- test-release-openstack https://zuul.opendev.org/t/openstack/build/b1e056d1b8f6468091ee1af0408be8ec : SUCCESS in 2m 11s\n- requirements-check https://zuul.opendev.org/t/openstack/build/7590acf198b941cc936ef5738d1fb92f : SUCCESS in 2m 43s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/b07abf99533f49b89bf2b8ea71bf79c7 : SUCCESS in 56m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/42921a847fc742799e7c71742ebd8f86 : SUCCESS in 2m 20s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/ccbec6e7cca34454bac930326b0fd89f : SUCCESS in 2m 19s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9d935e379905482397c178b48df5d0ff : SUCCESS in 4m 19s\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/212fd727090f4e3f80d48f026a0866bb : SUCCESS in 35m 03s\n- osc-tox-py310-tips https://zuul.opendev.org/t/openstack/build/97ab6ffa76f4440f86f7bfa4c674ec1d : SUCCESS in 6m 18s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/65fbf248977f4ea999b5da716d9d89e3 : SUCCESS in 4m 00s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/952502cb5a3e41e096eb04ec169fb6e8 : SUCCESS in 6m 55s","accounts_in_message":[],"_revision_number":1},{"id":"3b8d94f808bbb64ada8ce41b8cd41db00d825e91","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-09 15:06:18.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"1099ca7821afa6a0c7f0c303840b08f7cdbb3e43","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-09 15:08:10.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7aa1700c251146f395bcf95739bbb5b2\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5e0a5672f9774622b7a0afad75e74f08 : SUCCESS in 1m 06s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"32f58f2b95dfc01404095dea025d7891abe79324","revisions":{"32f58f2b95dfc01404095dea025d7891abe79324":{"kind":"REWORK","_number":1,"created":"2026-03-09 11:45:08.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/06/979506/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystoneauth","ref":"refs/changes/06/979506/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/06/979506/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/06/979506/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/06/979506/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystoneauth refs/changes/06/979506/1"}}},"commit":{"parents":[{"commit":"472dba05b1229b2518c2648f24a3bf4e3ece73ad","subject":"Merge \"Drop unused types-simplejson\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/472dba05b1229b2518c2648f24a3bf4e3ece73ad"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-09 11:44:11.000000000","tz":0},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-09 11:44:11.000000000","tz":0},"subject":"ruff: Configure hacking as external linter","message":"ruff: Configure hacking as external linter\n\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\nChange-Id: Ic8f81e2df7c310f52e5b88dda94762bc0a2b7948\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/32f58f2b95dfc01404095dea025d7891abe79324"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/32f58f2b95dfc01404095dea025d7891abe79324"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
