)]}'
{"id":"openstack%2Fcliff~982446","triplet_id":"openstack%2Fcliff~master~I58b0be9d39ec6f6091ba2013436c11256b4befc7","project":"openstack/cliff","branch":"master","topic":"typing","hashtags":[],"change_id":"I58b0be9d39ec6f6091ba2013436c11256b4befc7","subject":"typing: Broaden return type of Command.get_parser","status":"MERGED","created":"2026-03-27 15:20:08.000000000","updated":"2026-03-27 18:23:31.000000000","submitted":"2026-03-27 18:22:40.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":"982446-typing","meta_rev_id":"dd60f46be8cfc86abdea2c56c7b5361e5d709bfc","_number":982446,"virtual_id_number":982446,"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-27 18:22:40.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-27 16:55:25.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-27 16:55:25.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-27 16:15:54.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":"08ac490613b1d34152a8c6dbcc1d9daf011f08ef","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-27 15:20:08.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"646d3ff7a72c1042f67a83ed810e8b29a1a2bdf5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-27 16:15:54.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/93e2e12cc61c4e6385ed03a54922291e\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/dac21ddc674949f188771ff696bff41a : SUCCESS in 54m 38s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4091fc65bd164b4aa60558bb74486459 : SUCCESS in 3m 01s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c4abe7e8d74745478b92f20e822c726a : SUCCESS in 2m 21s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/9c8a45f4d21844199ff11e84ad0445cf : SUCCESS in 3m 12s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/fd0d304eec2546a5b537de8a19cbdc05 : SUCCESS in 3m 06s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c57f11d923db4879888dccdd26f3be4d : SUCCESS in 5m 33s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/042ec77e50c94042932c8595b5da2605 : SUCCESS in 3m 14s\n- cliff-tox-py312-neutronclient-tip https://zuul.opendev.org/t/openstack/build/1f8dc3161cd342b5b703fe31fa57bcc8 : SUCCESS in 3m 31s\n- osc-tox-py312-tips https://zuul.opendev.org/t/openstack/build/f41d47895bff4f98aad972a13b138a14 : SUCCESS in 10m 09s","accounts_in_message":[],"_revision_number":1},{"id":"18cd3f97cebc449e7df2f8048ccda1a522493778","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-27 16:55:25.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"e86ba61e07b58113f8b28a17ac40a74998549c6e","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-27 16:55:49.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"d95658ec97c48665a0bc6daa554d5388a06f4c1b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-27 18:22:40.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1767caf3885e4052b4d1b588a81adb85\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/6908826ad865460ab2e965be3c93611a : SUCCESS in 1h 25m 32s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3569bd444d0e4c2ab3dbcdfa666892df : SUCCESS in 2m 02s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/8c4db6588ee143b9be83b8d0cddbe47e : SUCCESS in 2m 51s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/e73d18abdeec48b38b4e4bd9682d2bbe : SUCCESS in 3m 14s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b4f5735fc7674789819889c0b06ac4e5 : SUCCESS in 2m 44s\n- cliff-tox-py312-neutronclient-tip https://zuul.opendev.org/t/openstack/build/97e4b45bdb864d70a3c9f1a185f5902f : SUCCESS in 2m 03s\n- osc-tox-py312-tips https://zuul.opendev.org/t/openstack/build/1234c98f2310428bbea7d5677c87d47a : SUCCESS in 4m 37s","accounts_in_message":[],"_revision_number":1},{"id":"6daf35150e6d481db6cd87e0584ad12877f15e47","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-27 18:22:40.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"dd60f46be8cfc86abdea2c56c7b5361e5d709bfc","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-27 18:23:31.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8044ee3681a845868bd8b99304015179\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7e2ed9df8c7347a2ba7646db74047613 : SUCCESS in 41s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"948fdf4effd5d644cbc0648a7ace049d194e1277","revisions":{"948fdf4effd5d644cbc0648a7ace049d194e1277":{"kind":"REWORK","_number":1,"created":"2026-03-27 15:20:08.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/46/982446/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cliff","ref":"refs/changes/46/982446/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cliff refs/changes/46/982446/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cliff refs/changes/46/982446/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cliff refs/changes/46/982446/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cliff refs/changes/46/982446/1"}}},"commit":{"parents":[{"commit":"bef26b5f3924165d333ea87ac73c8d4c4caca9e5","subject":"ruff: Configure hacking as external linter","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/bef26b5f3924165d333ea87ac73c8d4c4caca9e5"}]}],"author":{"name":"Stephen Finucane","email":"sfinucan@redhat.com","date":"2026-03-27 14:57:35.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"sfinucan@redhat.com","date":"2026-03-27 15:00:28.000000000","tz":60},"subject":"typing: Broaden return type of Command.get_parser","message":"typing: Broaden return type of Command.get_parser\n\nEven though this type was technically true, it\u0027s really more of an\nimplementation detail and had the side effect of making our type overly\nnarrow and forcing users implementing their own commands to either\nimport from a private module or use `type: ignore[override]`. Neither is\na great option. Better to have people use casts to the private class in\nthe unlikely case they need that implementation detail.\n\nChange-Id: I58b0be9d39ec6f6091ba2013436c11256b4befc7\nSigned-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/948fdf4effd5d644cbc0648a7ace049d194e1277"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/948fdf4effd5d644cbc0648a7ace049d194e1277"}]},"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":{}}}]}
