)]}'
{"id":"openstack%2Foslo.versionedobjects~992226","triplet_id":"openstack%2Foslo.versionedobjects~master~I8e3288664c2f6598511423229c72d7d39a141fda","project":"openstack/oslo.versionedobjects","branch":"master","topic":"typing","hashtags":[],"change_id":"I8e3288664c2f6598511423229c72d7d39a141fda","subject":"mypy: Derive field types from generic parameter","status":"MERGED","created":"2026-06-08 12:38:53.000000000","updated":"2026-06-09 19:31:29.000000000","submitted":"2026-06-09 19:30:31.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":"992226-typing","meta_rev_id":"2ee7764bb23c77b12d68fc8434e5689046dc9ce6","_number":992226,"virtual_id_number":992226,"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-06-09 19:30:31.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-06-09 15:26:14.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-06-09 15:26:14.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},"Backport-Candidate":{"all":[{"value":0,"_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 Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"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-06-08 14:17:12.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":"6ce44cc07b5a7fae2716df573884f30db1efb9a0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-06-08 12:38:53.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"00748058bac46d5c4935d3d2afba06691ddb20ce","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-08 14:17:12.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f2da99522cb74939bb64f336563fd8f0\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/2e9b1cc140ff41cf96ed56a76d3cc641 : SUCCESS in 1h 34m 15s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d8c97af626ef41ca859597657b11837d : SUCCESS in 4m 40s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/227186dec06a44a0871f256c6de9f26b : SUCCESS in 3m 17s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/092e3e9691bc408da1aebbb9cab6c625 : SUCCESS in 3m 28s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/65e7eddb359d45749ca469820c08e5fb : SUCCESS in 6m 25s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/586b224a4c8f4c4ab496fa251d84196b : SUCCESS in 3m 52s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/e0d588b3c18b44a1a3f69c02d3af38f5 : SUCCESS in 6m 19s\n- oslo.versionedobjects-src-grenade-multinode https://zuul.opendev.org/t/openstack/build/eb3c1b4a31de4987ba9c3686233c53f7 : SUCCESS in 1h 16m 17s (non-voting)\n- oslo.versionedobjects-nova-tox-py313 https://zuul.opendev.org/t/openstack/build/d80d221750e544eaa555f30bc69bdeb2 : SUCCESS in 14m 26s\n- oslo.versionedobjects-ironic-tox-py313 https://zuul.opendev.org/t/openstack/build/e7837f6d23a04796a3766efce1e8610a : SUCCESS in 7m 30s","accounts_in_message":[],"_revision_number":1},{"id":"186472b020abd844db5f2b8f496f889d7ec9aad8","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-06-09 15:26:14.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"8bf2aae5b048c4cbc4f5381ad59def3e898ebd6f","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-09 17:17:46.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"6fb642c7893586cd4d3cbf5d5f168c0729795237","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-09 19:30:31.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a997c79a4d21494387c46faa21fec20d\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/e4ae1e34b7fd4320b56666c6248efd5b : SUCCESS in 2h 00m 11s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f3d265b89649447ca3c5da3c150c3f6c : SUCCESS in 4m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/332eee89d2bf4b2f8604d9bc6837d358 : SUCCESS in 3m 27s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/08d310062839451da5e86fcc9c92dab0 : SUCCESS in 3m 48s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/cefb5807ac4248cfb1709456a2a1f339 : SUCCESS in 4m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/62829941197145929373aae07f03e6c9 : SUCCESS in 6m 27s\n- oslo.versionedobjects-nova-tox-py313 https://zuul.opendev.org/t/openstack/build/6d2a500600ea44bc9180f38e624ca750 : SUCCESS in 17m 08s\n- oslo.versionedobjects-ironic-tox-py313 https://zuul.opendev.org/t/openstack/build/211f674e022b4ec3b7bb8036fbe8f333 : SUCCESS in 5m 39s","accounts_in_message":[],"_revision_number":1},{"id":"fc933ab8eb2179c378282c475e706537815426f9","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-09 19:30:31.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"2ee7764bb23c77b12d68fc8434e5689046dc9ce6","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-09 19:31:29.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/77adef7a2c284c50a705e9959a298998\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/562c0d89d7d843e2ae00a49a91b278e1 : SUCCESS in 42s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"2e61d59687615b5dc473855fa45832021868af8d","revisions":{"2e61d59687615b5dc473855fa45832021868af8d":{"kind":"REWORK","_number":1,"created":"2026-06-08 12:38:53.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/26/992226/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.versionedobjects","ref":"refs/changes/26/992226/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.versionedobjects refs/changes/26/992226/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.versionedobjects refs/changes/26/992226/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.versionedobjects refs/changes/26/992226/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.versionedobjects refs/changes/26/992226/1"}}},"commit":{"parents":[{"commit":"3bbdcbb786b81e8e3726824fc591f82ca416336c","subject":"tests: De-dupe AST generation","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.versionedobjects/commit/3bbdcbb786b81e8e3726824fc591f82ca416336c"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-05-12 13:20:14.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-06-08 12:33:19.000000000","tz":60},"subject":"mypy: Derive field types from generic parameter","message":"mypy: Derive field types from generic parameter\n\nThe original design for this plugin [1] expected a `MYPY_TYPE` class\nattribute on every o.vo field class to determine the corresponding\nPython type. However, this attribute was not added to the various\nbuilt-in fields in o.vo when adding this plugin because we now have a\nbetter way to express this type information: generics, which are already\nused across the code base.\n\nAdd `_get_auto_typed_field_type`, which walks the MRO of a field class\nlooking for an `AutoTypedField` base with a concrete (non-TypeVar) type\nargument and use that instead. This makes the plugin correctly type all\nstandard o.vo fields rather than falling back to `Any`.\n\nChange-Id: I8e3288664c2f6598511423229c72d7d39a141fda\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\nAssisted-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.versionedobjects/commit/2e61d59687615b5dc473855fa45832021868af8d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.versionedobjects/commit/2e61d59687615b5dc473855fa45832021868af8d"}]},"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"}},{"label":"Backport-Candidate","status":"MAY"}]}],"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":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"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":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"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":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
