)]}'
{"id":"openstack%2Foslo.utils~983718","triplet_id":"openstack%2Foslo.utils~master~Ice60c7f944bea3fdce4284cc2f0881f40996cf8f","project":"openstack/oslo.utils","branch":"master","attention_set":{},"removed_from_attention_set":{"28522":{"account":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"last_update":"2026-04-08 16:09:08.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Ice60c7f944bea3fdce4284cc2f0881f40996cf8f","subject":"typing: Add type annotations for testscenarios in StringToBytesTest","status":"MERGED","created":"2026-04-08 13:20:51.000000000","updated":"2026-04-08 16:10:16.000000000","submitted":"2026-04-08 16:09:08.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"983718","meta_rev_id":"83e3f8abfe6238b901827cd97cd28f04c65628c6","_number":983718,"virtual_id_number":983718,"owner":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"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-04-08 16:09:07.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-04-08 14:51: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-04-08 14:51: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},"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-04-08 14:51:25.000000000","updated_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"reviewer":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"state":"REVIEWER"},{"updated":"2026-04-08 15:09:48.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":"0aa1b8a61acb8c3a00167b29fa725e1595c196d9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"date":"2026-04-08 13:20:51.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"ab984213ce221a5ba15ced2fd8a43cdb9a80602d","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-04-08 14:51:25.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"1d92fac25202ea87940e8174001ca9d7f0e11c79","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-08 15:09:48.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c1e9c9a6c93945ebaa11cabd959f455f\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/d2b293c60f8e45e985b7a7cf27cd9e3e : SUCCESS in 1h 38m 03s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/54505d4f93554224b7eac48f752b861f : SUCCESS in 6m 53s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b4674e1db1484243874e9d0d6955c531 : SUCCESS in 6m 11s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/34793172f3de44fba1460fac186299ad : SUCCESS in 5m 39s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9420cd7b5dbe449587d93aa9a1d9b4ee : SUCCESS in 5m 24s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6dbe56207d1a4409a7ebeea6bd357b64 : SUCCESS in 6m 57s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8d2a4f9b518840f786de149443fdb9c3 : SUCCESS in 3m 58s","accounts_in_message":[],"_revision_number":1},{"id":"a9185e3e57f99c6cfbf35e58593180b1ac118f03","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-08 15:10:31.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"2bffbe2faafa411c236462b8a0bce18049249706","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-08 16:09:07.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4e3926ff6781427894ab269a071d0d3e\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/63c05a6133d847d285f4985b40f65742 : SUCCESS in 58m 03s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/799d0986930d42e98a63beb1bc931662 : SUCCESS in 2m 12s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/f5b1f7a3b98c433b9dba3555ef90cb66 : SUCCESS in 6m 07s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/2397654744d84e2f9ec90ab83674b7d8 : SUCCESS in 3m 06s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/389e7b95d6584bae8ffde7762dfb18bd : SUCCESS in 3m 24s","accounts_in_message":[],"_revision_number":1},{"id":"febaa3b0a700c7959bac22df8c6f57a14d6cc95f","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-08 16:09:08.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"83e3f8abfe6238b901827cd97cd28f04c65628c6","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-08 16:10:16.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/979f325933a54f948df91eec563baec5\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/54abbd0625e84efe93b98ee62dc36f6e : SUCCESS in 49s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"125f958d9dea8b10dfa17a12d6b0beb868f38fa7","revisions":{"125f958d9dea8b10dfa17a12d6b0beb868f38fa7":{"kind":"REWORK","_number":1,"created":"2026-04-08 13:20:51.000000000","uploader":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"ref":"refs/changes/18/983718/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.utils","ref":"refs/changes/18/983718/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/18/983718/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/18/983718/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/18/983718/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.utils refs/changes/18/983718/1"}}},"commit":{"parents":[{"commit":"eebbf5de05ff2bdd05144a27d95eab293eba85da","subject":"Merge \"typing: Allow None default for bool_from_string\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/eebbf5de05ff2bdd05144a27d95eab293eba85da"}]}],"author":{"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","date":"2026-04-08 13:18:50.000000000","tz":120},"committer":{"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","date":"2026-04-08 13:19:46.000000000","tz":120},"subject":"typing: Add type annotations for testscenarios in StringToBytesTest","message":"typing: Add type annotations for testscenarios in StringToBytesTest\n\nThe StringToBytesTest class uses testscenarios.multiply_scenarios() to\ndynamically inject test attributes (sign, magnitude, unit_prefix, etc.)\nat runtime. Mypy cannot infer these dynamically-generated attributes,\nresulting in 19 \"has no attribute\" errors during type checking.\n\nThis change adds explicit type annotations for the scenarios class\nattribute and all instance attributes that get injected by the\ntestscenarios framework, allowing mypy to properly validate the test\ncode without errors.\n\nAssisted-By: Claude Sonnet 4.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ice60c7f944bea3fdce4284cc2f0881f40996cf8f\nSigned-off-by: Hervé Beraud \u003cherveberaud.pro@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/125f958d9dea8b10dfa17a12d6b0beb868f38fa7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/125f958d9dea8b10dfa17a12d6b0beb868f38fa7"}]},"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":{}}},{"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":{}}},{"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":{}}}]}
