)]}'
{"id":"openstack%2Fkolla~950533","triplet_id":"openstack%2Fkolla~master~I4458b7fc7a434c3dba7bb61d2ca5c44e175829e7","project":"openstack/kolla","branch":"master","attention_set":{},"removed_from_attention_set":{"27339":{"account":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"last_update":"2025-05-21 14:10:59.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I4458b7fc7a434c3dba7bb61d2ca5c44e175829e7","subject":"Fix mock_open() expectations for Python 3.13+","status":"ABANDONED","created":"2025-05-21 12:29:28.000000000","updated":"2025-05-21 14:10:59.000000000","total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a110bfff15f4f348ec517b0abc25b43ce097ff15","_number":950533,"virtual_id_number":950533,"owner":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"actions":{},"labels":{"Verified":{"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":{"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":{"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"values":{"-1":"Do Not Backport"," 0":"Backport Review Needed","+1":"Should Backport"},"description":"","default_value":0,"optional":true},"Review-Priority":{"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-05-21 13:40:29.000000000","updated_by":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"reviewer":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"state":"CC"}],"messages":[{"id":"3755e9b50e945208d59b4ea1eb38e267e35d6bc5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"date":"2025-05-21 12:29:28.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"b970b8742f4a78b3b10e15ef48d1e1df1ed4c0ba","author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"date":"2025-05-21 13:40:29.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"a110bfff15f4f348ec517b0abc25b43ce097ff15","tag":"autogenerated:gerrit:abandon","author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"date":"2025-05-21 14:10:59.000000000","message":"Abandoned\n\nduplicate","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"171a681a576539ea173ebd7ed4afb0451d4e3d85","revisions":{"171a681a576539ea173ebd7ed4afb0451d4e3d85":{"kind":"REWORK","_number":1,"created":"2025-05-21 12:29:28.000000000","uploader":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"ref":"refs/changes/33/950533/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/kolla","ref":"refs/changes/33/950533/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/kolla refs/changes/33/950533/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/kolla refs/changes/33/950533/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/kolla refs/changes/33/950533/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/kolla refs/changes/33/950533/1"}}},"commit":{"parents":[{"commit":"0006320d98fa7e594fbd17ade36d2572ca3231ed","subject":"Fix lines in documencation [trivial]","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/kolla/commit/0006320d98fa7e594fbd17ade36d2572ca3231ed"}]}],"author":{"name":"Michal Arbet","email":"michal.arbet@ultimum.io","date":"2025-05-21 12:27:23.000000000","tz":120},"committer":{"name":"Michal Arbet","email":"michal.arbet@ultimum.io","date":"2025-05-21 12:27:23.000000000","tz":120},"subject":"Fix mock_open() expectations for Python 3.13+","message":"Fix mock_open() expectations for Python 3.13+\n\nPython 3.13 introduces a behavior change in unittest.mock.mock_open(),\nwhich now calls close() when exiting the context manager\nas described in bpo-44185 [1]. This causes additional mock calls to appear,\nbreaking strict mock_calls assertions.\n\nThis patch filters out mock.call().close() to maintain compatibility\nwith both Python 3.12 and 3.13.\n\nFrom mock documentation [2]:\n  \"bpo-44185: unittest.mock.mock_open() will call the close() method\n   of the file handle mock when it is exiting from the context manager.\n   Patch by Samet Yaslan.\"\n\n[1] https://bugs.python.org/issue44185\n[2] https://mock.readthedocs.io/en/latest/changelog.html\n\nChange-Id: I4458b7fc7a434c3dba7bb61d2ca5c44e175829e7\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/kolla/commit/171a681a576539ea173ebd7ed4afb0451d4e3d85"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/kolla/commit/171a681a576539ea173ebd7ed4afb0451d4e3d85"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"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":{}}},{"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":"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":{}}},{"name":"NonZeroBackportCandidate","description":"A non-zero vote on Backport-Candidate is required before submitting changes","status":"UNSATISFIED","is_legacy":false,"applicability_expression_result":{"fulfilled":true,"status":"PASS"},"submittability_expression_result":{"expression":"label:Backport-Candidate\u003d1 OR label:Backport-Candidate\u003d-1 OR label:Backport-Candidate\u003d-2 OR label:Backport-Candidate\u003d2","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Backport-Candidate\u003d1","label:Backport-Candidate\u003d-1","label:Backport-Candidate\u003d-2","label:Backport-Candidate\u003d2"],"atom_explanations":{}}},{"name":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{}}},{"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":{}}}]}
