)]}'
{"id":"couchbase-python-client~250742","triplet_id":"couchbase-python-client~master~I0f80fa57dd775df007600bf51f10007529a91c9b","project":"couchbase-python-client","branch":"master","attention_set":{},"removed_from_attention_set":{"1004568":{"account":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"last_update":"2026-08-25 18:44:33.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I0f80fa57dd775df007600bf51f10007529a91c9b","subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","status":"MERGED","created":"2026-08-12 20:08:25.000000000","updated":"2026-08-25 18:44:33.000000000","submitted":"2026-08-25 18:44:33.000000000","submitter":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"250742","meta_rev_id":"6483a69b61c96a8d593e2418dfba81b97d62d8b5","_number":250742,"virtual_id_number":250742,"owner":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:gerrit:merged","value":1,"date":"2026-08-25 18:44:33.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"all":[{"value":0,"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2026-08-25 18:44:33.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-2":"Do not submit","-1":"I would prefer that you didn\u0027t submit this"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"Well-Formed":{"all":[{"value":0,"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"value":0,"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"value":0,"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Commit is not well-formed"," 0":"Well-formedness not checked","+1":"Commit is well-formed"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-12 20:08:36.000000000","updated_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-08-12 20:09:10.000000000","updated_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-08-24 16:47:19.000000000","updated_by":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"}],"messages":[{"id":"84d1f8c5b188abf64e13f0a13f3c01bc82a5e67e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-12 20:08:25.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"f858888b5ea6e5c9bc7f751f0c190dd264bca73f","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-12 20:08:36.000000000","message":"Patch Set 1:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7648/","accounts_in_message":[],"_revision_number":1},{"id":"d604a0954e89b53de9bee2cb62e8b7f5164bf4b9","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-12 20:09:10.000000000","message":"Patch Set 1: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7648/ : ABORTED","accounts_in_message":[],"_revision_number":1},{"id":"5d682f934ee7c8f7789bb2fbf3057a374a6d3fc5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-13 16:25:13.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":2},{"id":"061e2a150dc5f57d881d57a0d7cdbc8beec8daba","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-13 16:25:23.000000000","message":"Patch Set 2:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7651/","accounts_in_message":[],"_revision_number":2},{"id":"8804fb53bc27c8f007947b635985bcd8a03bd0b5","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-13 16:26:49.000000000","message":"Patch Set 2: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7651/ : ABORTED","accounts_in_message":[],"_revision_number":2},{"id":"0b61b011842b3b378cd1c17d1b7f426149ba0162","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-13 23:15:02.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":2},{"id":"b92c0c487b1c865434c028c45f3ae1dae1e94d56","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-14 02:04:16.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":3},{"id":"afb6f9a4b457fe7e4154f66b4bbaa7ca1682fa9a","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-14 02:04:25.000000000","message":"Patch Set 3:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7655/","accounts_in_message":[],"_revision_number":3},{"id":"80fa2beb5764ff086d1b2240bbb194892186be3f","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-14 02:04:32.000000000","message":"Patch Set 3: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7655/ : ABORTED","accounts_in_message":[],"_revision_number":3},{"id":"205b4c6b952d5e92b41a84a77eaad9ef92e49723","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-14 16:49:27.000000000","message":"Patch Set 4: Patch Set 3 was rebased\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":4},{"id":"a07766fd96d2a52b50b022895ac7d9d83aac6bce","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-14 16:49:33.000000000","message":"Patch Set 4:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7656/","accounts_in_message":[],"_revision_number":4},{"id":"f9ac63e4f887cbf34f196b9ce0b4c5c114facb9c","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-14 16:49:42.000000000","message":"Patch Set 4: Verified-1\n\nBuild Failed \n\nhttps://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7656/ : ABORTED","accounts_in_message":[],"_revision_number":4},{"id":"29cb520e44564ebb5603f4b66462937a0aab44d6","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-22 01:36:27.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"changekind:NO_CHANGE OR changekind:NO_CODE_CHANGE\")\n","accounts_in_message":[],"_revision_number":5},{"id":"f713c0c9e9bb50559354674b8af119fc5abc05c3","tag":"autogenerated:gerrit:setReadyForReview","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-22 01:36:35.000000000","message":"Set Ready For Review","accounts_in_message":[],"_revision_number":5},{"id":"4a4a7194faf8639a0adca4b775515692b75c6217","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-22 01:36:37.000000000","message":"Patch Set 5:\n\nBuild Started https://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7672/","accounts_in_message":[],"_revision_number":5},{"id":"f17ecb17801ec5a0dd4b9e2cb29bc844bb9c178a","author":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"date":"2026-08-22 02:57:18.000000000","message":"Patch Set 5: Verified+1\n\nBuild Successful \n\nhttps://sdk.jenkins.couchbase.com/job/python/job/sdk/job/python-gerrit-trigger/7672/ : SUCCESS","accounts_in_message":[],"_revision_number":5},{"id":"bf57a49c8a83c18474238a4274cc12295c196dd0","author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-24 16:47:19.000000000","message":"Patch Set 5: Code-Review+2","accounts_in_message":[],"_revision_number":5},{"id":"6483a69b61c96a8d593e2418dfba81b97d62d8b5","tag":"autogenerated:gerrit:merged","author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2026-08-25 18:44:33.000000000","message":"Change has been successfully cherry-picked as b0ce0a8fd33ebfcff328065c2fbc2520e77901f0","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"b0ce0a8fd33ebfcff328065c2fbc2520e77901f0","revisions":{"484cda5c844a333a3f0dc139d5391d3d1b97ed04":{"kind":"REWORK","_number":1,"created":"2026-08-12 20:08:25.000000000","uploader":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/42/250742/1","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-python-client","ref":"refs/changes/42/250742/1","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/1 \u0026\u0026 git checkout -b change-250742 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/1","Reset To":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c0a3e39895e46c823482c360fa70327ce9152f8","subject":"PYCBC-1852: Raise on invalid int-enum values instead of default"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","message":"PYCBC-1854: Migrate _core to the stable ABI (abi3)\n\nChanges\n--------\n* Convert every C-extension type (logger, exceptions, result/streamed\n  result/scan iterator, connection, transactions, hdr_histogram,\n  kv_request) from static PyTypeObject structs to PyType_Spec/\n  PyType_FromSpec heap types, using PyType_GenericAlloc and, for\n  subclassable (Py_TPFLAGS_BASETYPE) types, PyType_GetSlot(Py_tp_free)\n  in place of direct struct-member access\n* Regenerate pycbc_kv_request.cxx/.hxx via autogen from updated\n  jinja2 templates carrying the same heap-type conversion\n* Modernize module init: PyModule_AddType/PyModule_AddObjectRef\n  replace the now-dead register_pytype/register_heap_type helpers\n  (deleted) at all call sites; spot-sweep Py_INCREF+assign pairs to\n  Py_NewRef\n* Add limited-API compatibility shims in pytype_utils.hxx (Py_T_*\n  PyMemberDef macros, a PyUnicode_AsUTF8 shim pre-3.13) and fix a\n  missing include in pytocbpp_defs.hxx that needed it\n* Add PYCBC_PY_LIMITED_API build option (default on, floor 3.10):\n  CMakeLists.txt/setup.py/pycbc_build_setup.py wire it through to\n  -fvisibility\u003dhidden, abi3 wheel tagging, and bdist_wheel\u0027s\n  --py-limited-api; python_requires corrected to \u003e\u003d3.10\n* Fix get_ext_filename/CMake always emitting an untagged .so for a\n  non-limited build, which any interpreter\u0027s import machinery would\n  load with no version check; now preserves the interpreter-specific\n  suffix\n* Modernize license metadata to SPDX (license\u003d\"Apache-2.0\",\n  license_files), drop the now-deprecated OSI classifier, and raise\n  the setuptools floor to \u003e\u003d70.1\n\nChange-Id: I0f80fa57dd775df007600bf51f10007529a91c9b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"9c0a3e39895e46c823482c360fa70327ce9152f8","is_merged_in_target_branch":false,"change_id":"I6079b6f7d401ee58d738bccc2acda925ae9c3406","change_number":250617,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"eaa3d9f2bc315109343eb8fc2fde09e6a881dcac":{"kind":"REWORK","_number":2,"created":"2026-08-13 16:25:13.000000000","uploader":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/42/250742/2","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-python-client","ref":"refs/changes/42/250742/2","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/2 \u0026\u0026 git checkout -b change-250742 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/2","Reset To":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c0a3e39895e46c823482c360fa70327ce9152f8","subject":"PYCBC-1852: Raise on invalid int-enum values instead of default"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-13 16:24:32.000000000","tz":-360},"subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","message":"PYCBC-1854: Migrate _core to the stable ABI (abi3)\n\nChanges\n--------\n* Convert every C-extension type (logger, exceptions, result/streamed\n  result/scan iterator, connection, transactions, hdr_histogram,\n  kv_request) from static PyTypeObject structs to PyType_Spec/\n  PyType_FromSpec heap types, using PyType_GenericAlloc for allocation\n  and a shared free_heap_type_instance() helper for teardown: heap-type\n  instances hold a reference to their type, so every tp_dealloc must\n  free through the type\u0027s own Py_tp_free slot (a Python subclass is\n  GC-allocated and needs PyObject_GC_Del) and then release that\n  reference\n* Regenerate pycbc_kv_request.cxx/.hxx via autogen from updated\n  jinja2 templates carrying the same heap-type conversion\n* Modernize module init: PyModule_AddType/PyModule_AddObjectRef\n  replace the now-dead register_pytype/register_heap_type helpers\n  (deleted) at all call sites; spot-sweep Py_INCREF+assign pairs to\n  Py_NewRef\n* Add limited-API compatibility shims in pytype_utils.hxx (Py_T_*\n  PyMemberDef macros, a PyUnicode_AsUTF8 shim pre-3.13) and fix a\n  missing include in pytocbpp_defs.hxx that needed it\n* Add PYCBC_PY_LIMITED_API build option (default on, floor 3.10):\n  CMakeLists.txt/setup.py/pycbc_build_setup.py wire it through to\n  abi3 wheel tagging and bdist_wheel\u0027s --py-limited-api;\n  python_requires corrected to \u003e\u003d3.10\n* Build pycbc_core with hidden default visibility (no-op under MSVC),\n  leaving PyInit__core -- which carries its own visibility(\"default\")\n  via PyMODINIT_FUNC -- as the module\u0027s only exported symbol\n* Link python3.lib rather than the version-specific python3XY.lib on\n  Windows for a limited-API build; explicitly-listed libraries beat\n  the /DEFAULTLIB that pyconfig.h\u0027s auto-link pragma injects, so the\n  old link would have bound an abi3-tagged .pyd to one interpreter\n* Fix get_ext_filename/CMake filename agreement: a limited-API build\n  emits \u003cname\u003e.abi3.\u003cso|pyd\u003e, and a non-limited build keeps the\n  interpreter-specific suffix instead of an untagged .so that any\n  interpreter\u0027s import machinery would load with no version check\n* Modernize license metadata to SPDX (license\u003d\"Apache-2.0\",\n  license_files), drop the now-deprecated OSI classifier, and raise\n  the setuptools floor to \u003e\u003d70.1\n\nChange-Id: I0f80fa57dd775df007600bf51f10007529a91c9b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"9c0a3e39895e46c823482c360fa70327ce9152f8","is_merged_in_target_branch":false,"change_id":"I6079b6f7d401ee58d738bccc2acda925ae9c3406","change_number":250617,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"4872926b764aff06d5a42a70fe424255247ffd5b":{"kind":"REWORK","_number":3,"created":"2026-08-14 02:04:16.000000000","uploader":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/42/250742/3","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-python-client","ref":"refs/changes/42/250742/3","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/3 \u0026\u0026 git checkout -b change-250742 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/3","Reset To":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c0a3e39895e46c823482c360fa70327ce9152f8","subject":"PYCBC-1852: Raise on invalid int-enum values instead of default"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-14 02:04:10.000000000","tz":-360},"subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","message":"PYCBC-1854: Migrate _core to the stable ABI (abi3)\n\nChanges\n--------\n* Convert every C-extension type (logger, exceptions, result/streamed\n  result/scan iterator, connection, transactions, hdr_histogram,\n  kv_request) from static PyTypeObject structs to PyType_Spec/\n  PyType_FromSpec heap types, using PyType_GenericAlloc for allocation\n  and a shared free_heap_type_instance() helper for teardown: heap-type\n  instances hold a reference to their type, so every tp_dealloc must\n  free through the type\u0027s own Py_tp_free slot (a Python subclass is\n  GC-allocated and needs PyObject_GC_Del) and then release that\n  reference\n* Regenerate pycbc_kv_request.cxx/.hxx via autogen from updated\n  jinja2 templates carrying the same heap-type conversion\n* Modernize module init: PyModule_AddType/PyModule_AddObjectRef\n  replace the now-dead register_pytype/register_heap_type helpers\n  (deleted) at all call sites; spot-sweep Py_INCREF+assign pairs to\n  Py_NewRef\n* Add limited-API compatibility shims in pytype_utils.hxx (Py_T_*\n  PyMemberDef macros, a PyUnicode_AsUTF8 shim pre-3.13) and fix a\n  missing include in pytocbpp_defs.hxx that needed it\n* Add PYCBC_PY_LIMITED_API build option (default on, floor 3.10):\n  CMakeLists.txt/setup.py/pycbc_build_setup.py wire it through to\n  abi3 wheel tagging and bdist_wheel\u0027s --py-limited-api;\n  python_requires corrected to \u003e\u003d3.10\n* Build pycbc_core with hidden default visibility (no-op under MSVC),\n  leaving PyInit__core -- which carries its own visibility(\"default\")\n  via PyMODINIT_FUNC -- as the module\u0027s only exported symbol\n* Link python3.lib rather than the version-specific python3XY.lib on\n  Windows for a limited-API build; explicitly-listed libraries beat\n  the /DEFAULTLIB that pyconfig.h\u0027s auto-link pragma injects, so the\n  old link would have bound an abi3-tagged .pyd to one interpreter\n* Fix get_ext_filename/CMake filename agreement: a limited-API build\n  emits \u003cname\u003e.abi3.\u003cso|pyd\u003e, and a non-limited build keeps the\n  interpreter-specific suffix instead of an untagged .so that any\n  interpreter\u0027s import machinery would load with no version check\n* Modernize license metadata to SPDX (license\u003d\"Apache-2.0\",\n  license_files), drop the now-deprecated OSI classifier, and raise\n  the setuptools floor to \u003e\u003d70.1\n\nChange-Id: I0f80fa57dd775df007600bf51f10007529a91c9b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"9c0a3e39895e46c823482c360fa70327ce9152f8","is_merged_in_target_branch":false,"change_id":"I6079b6f7d401ee58d738bccc2acda925ae9c3406","change_number":250617,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"79e6d48a4c67de993ec8c5181bf4e5d2527d478a":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2026-08-14 16:49:27.000000000","uploader":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/42/250742/4","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-python-client","ref":"refs/changes/42/250742/4","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/4 \u0026\u0026 git checkout -b change-250742 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/4","Reset To":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"d3927eb8039f7a9215ddfeb574d009b836473f78","subject":"PYCBC-1852: Raise on invalid int-enum values instead of default"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-14 16:49:27.000000000","tz":0},"subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","message":"PYCBC-1854: Migrate _core to the stable ABI (abi3)\n\nChanges\n--------\n* Convert every C-extension type (logger, exceptions, result/streamed\n  result/scan iterator, connection, transactions, hdr_histogram,\n  kv_request) from static PyTypeObject structs to PyType_Spec/\n  PyType_FromSpec heap types, using PyType_GenericAlloc for allocation\n  and a shared free_heap_type_instance() helper for teardown: heap-type\n  instances hold a reference to their type, so every tp_dealloc must\n  free through the type\u0027s own Py_tp_free slot (a Python subclass is\n  GC-allocated and needs PyObject_GC_Del) and then release that\n  reference\n* Regenerate pycbc_kv_request.cxx/.hxx via autogen from updated\n  jinja2 templates carrying the same heap-type conversion\n* Modernize module init: PyModule_AddType/PyModule_AddObjectRef\n  replace the now-dead register_pytype/register_heap_type helpers\n  (deleted) at all call sites; spot-sweep Py_INCREF+assign pairs to\n  Py_NewRef\n* Add limited-API compatibility shims in pytype_utils.hxx (Py_T_*\n  PyMemberDef macros, a PyUnicode_AsUTF8 shim pre-3.13) and fix a\n  missing include in pytocbpp_defs.hxx that needed it\n* Add PYCBC_PY_LIMITED_API build option (default on, floor 3.10):\n  CMakeLists.txt/setup.py/pycbc_build_setup.py wire it through to\n  abi3 wheel tagging and bdist_wheel\u0027s --py-limited-api;\n  python_requires corrected to \u003e\u003d3.10\n* Build pycbc_core with hidden default visibility (no-op under MSVC),\n  leaving PyInit__core -- which carries its own visibility(\"default\")\n  via PyMODINIT_FUNC -- as the module\u0027s only exported symbol\n* Link python3.lib rather than the version-specific python3XY.lib on\n  Windows for a limited-API build; explicitly-listed libraries beat\n  the /DEFAULTLIB that pyconfig.h\u0027s auto-link pragma injects, so the\n  old link would have bound an abi3-tagged .pyd to one interpreter\n* Fix get_ext_filename/CMake filename agreement: a limited-API build\n  emits \u003cname\u003e.abi3.\u003cso|pyd\u003e, and a non-limited build keeps the\n  interpreter-specific suffix instead of an untagged .so that any\n  interpreter\u0027s import machinery would load with no version check\n* Modernize license metadata to SPDX (license\u003d\"Apache-2.0\",\n  license_files), drop the now-deprecated OSI classifier, and raise\n  the setuptools floor to \u003e\u003d70.1\n\nChange-Id: I0f80fa57dd775df007600bf51f10007529a91c9b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"d3927eb8039f7a9215ddfeb574d009b836473f78","is_merged_in_target_branch":true,"change_id":"I6079b6f7d401ee58d738bccc2acda925ae9c3406","change_number":250617,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master","description":"Rebase"},"d0ed045d76194919160dd2257eff2fdd138cb3c8":{"kind":"REWORK","_number":5,"created":"2026-08-22 01:36:27.000000000","uploader":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/42/250742/5","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-python-client","ref":"refs/changes/42/250742/5","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/5 \u0026\u0026 git checkout -b change-250742 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/5","Reset To":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"d3927eb8039f7a9215ddfeb574d009b836473f78","subject":"PYCBC-1852: Raise on invalid int-enum values instead of default"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-22 01:12:26.000000000","tz":-360},"subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","message":"PYCBC-1854: Migrate _core to the stable ABI (abi3)\n\nChanges\n--------\n* Convert every C-extension type (logger, exceptions, result/streamed\n  result/scan iterator, connection, transactions, hdr_histogram,\n  kv_request) from static PyTypeObject structs to PyType_Spec/\n  PyType_FromSpec heap types, using PyType_GenericAlloc for allocation\n  and a shared free_heap_type_instance() helper for teardown: heap-type\n  instances hold a reference to their type, so every tp_dealloc must\n  free through the type\u0027s own Py_tp_free slot (a Python subclass is\n  GC-allocated and needs PyObject_GC_Del) and then release that\n  reference\n* Regenerate pycbc_kv_request.cxx/.hxx via autogen from updated\n  jinja2 templates carrying the same heap-type conversion\n* Modernize module init: PyModule_AddType/PyModule_AddObjectRef\n  replace the now-dead register_pytype/register_heap_type helpers\n  (deleted) at all call sites; spot-sweep Py_INCREF+assign pairs to\n  Py_NewRef\n* Add limited-API compatibility shims in pytype_utils.hxx (Py_T_*\n  PyMemberDef macros, a PyUnicode_AsUTF8 shim pre-3.13) and fix a\n  missing include in pytocbpp_defs.hxx that needed it\n* Add PYCBC_PY_LIMITED_API build option (default on, floor 3.10):\n  CMakeLists.txt/setup.py/pycbc_build_setup.py wire it through to\n  abi3 wheel tagging and bdist_wheel\u0027s --py-limited-api;\n  python_requires corrected to \u003e\u003d3.10\n* Build pycbc_core with hidden default visibility (no-op under MSVC),\n  leaving PyInit__core -- which carries its own visibility(\"default\")\n  via PyMODINIT_FUNC -- as the module\u0027s only exported symbol\n* Link python3.lib rather than the version-specific python3XY.lib on\n  Windows for a limited-API build; explicitly-listed libraries beat\n  the /DEFAULTLIB that pyconfig.h\u0027s auto-link pragma injects, so the\n  old link would have bound an abi3-tagged .pyd to one interpreter\n* Fix get_ext_filename/CMake filename agreement: a limited-API build\n  emits \u003cname\u003e.abi3.\u003cso|pyd\u003e, and a non-limited build keeps the\n  interpreter-specific suffix instead of an untagged .so that any\n  interpreter\u0027s import machinery would load with no version check\n* pycbc_build_setup.py: pass the package directory once, on every\n  platform, as -DPYCBC_MODULE_OUTPUT_DIRECTORY, replacing the global\n  -DCMAKE_LIBRARY_OUTPUT_DIRECTORY[_\u003cCONFIG\u003e] and the Windows-only\n  -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_\u003cCONFIG\u003e, which retargeted every\n  library, executable and DLL in the build tree rather than just the\n  extension module (on Windows that pulled BoringSSL\u0027s bssl.exe into\n  the wheel)\n* CMakeLists.txt: apply that path as a per-target property on\n  pycbc_core only, selecting the category by platform (RUNTIME for the\n  Windows DLL, LIBRARY everywhere else) and pointing\n  PDB_OUTPUT_DIRECTORY at the build tree, including the per-config\n  variants that multi-config generators require\n* CMakeLists.txt: warn when PYCBC_MODULE_OUTPUT_DIRECTORY is unset;\n  nothing else places the module, so the wheel would otherwise be\n  packed without an extension and fail at import instead of at build\n  time\n* Modernize license metadata to SPDX (license\u003d\"Apache-2.0\",\n  license_files), drop the now-deprecated OSI classifier, and raise\n  the setuptools floor to \u003e\u003d70.1\n\nChange-Id: I0f80fa57dd775df007600bf51f10007529a91c9b\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"d3927eb8039f7a9215ddfeb574d009b836473f78","is_merged_in_target_branch":true,"change_id":"I6079b6f7d401ee58d738bccc2acda925ae9c3406","change_number":250617,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/master"},"b0ce0a8fd33ebfcff328065c2fbc2520e77901f0":{"kind":"REWORK","_number":6,"created":"2026-08-25 18:44:33.000000000","uploader":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/42/250742/6","fetch":{"anonymous http":{"url":"https://review.couchbase.org/couchbase-python-client","ref":"refs/changes/42/250742/6","commands":{"Branch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/6 \u0026\u0026 git checkout -b change-250742 FETCH_HEAD","Checkout":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/6","Reset To":"git fetch https://review.couchbase.org/couchbase-python-client refs/changes/42/250742/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"cf977c7016e5843c1a3168a885aa75a7a09c775a","subject":"PYCBC-1876: Correct variadic and callback type annotations"}],"author":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-12 20:05:59.000000000","tz":-360},"committer":{"name":"Jared Casey","email":"jared.casey@couchbase.com","date":"2026-08-25 18:44:33.000000000","tz":0},"subject":"PYCBC-1854: Migrate _core to the stable ABI (abi3)","message":"PYCBC-1854: Migrate _core to the stable ABI (abi3)\n\nChanges\n--------\n* Convert every C-extension type (logger, exceptions, result/streamed\n  result/scan iterator, connection, transactions, hdr_histogram,\n  kv_request) from static PyTypeObject structs to PyType_Spec/\n  PyType_FromSpec heap types, using PyType_GenericAlloc for allocation\n  and a shared free_heap_type_instance() helper for teardown: heap-type\n  instances hold a reference to their type, so every tp_dealloc must\n  free through the type\u0027s own Py_tp_free slot (a Python subclass is\n  GC-allocated and needs PyObject_GC_Del) and then release that\n  reference\n* Regenerate pycbc_kv_request.cxx/.hxx via autogen from updated\n  jinja2 templates carrying the same heap-type conversion\n* Modernize module init: PyModule_AddType/PyModule_AddObjectRef\n  replace the now-dead register_pytype/register_heap_type helpers\n  (deleted) at all call sites; spot-sweep Py_INCREF+assign pairs to\n  Py_NewRef\n* Add limited-API compatibility shims in pytype_utils.hxx (Py_T_*\n  PyMemberDef macros, a PyUnicode_AsUTF8 shim pre-3.13) and fix a\n  missing include in pytocbpp_defs.hxx that needed it\n* Add PYCBC_PY_LIMITED_API build option (default on, floor 3.10):\n  CMakeLists.txt/setup.py/pycbc_build_setup.py wire it through to\n  abi3 wheel tagging and bdist_wheel\u0027s --py-limited-api;\n  python_requires corrected to \u003e\u003d3.10\n* Build pycbc_core with hidden default visibility (no-op under MSVC),\n  leaving PyInit__core -- which carries its own visibility(\"default\")\n  via PyMODINIT_FUNC -- as the module\u0027s only exported symbol\n* Link python3.lib rather than the version-specific python3XY.lib on\n  Windows for a limited-API build; explicitly-listed libraries beat\n  the /DEFAULTLIB that pyconfig.h\u0027s auto-link pragma injects, so the\n  old link would have bound an abi3-tagged .pyd to one interpreter\n* Fix get_ext_filename/CMake filename agreement: a limited-API build\n  emits \u003cname\u003e.abi3.\u003cso|pyd\u003e, and a non-limited build keeps the\n  interpreter-specific suffix instead of an untagged .so that any\n  interpreter\u0027s import machinery would load with no version check\n* pycbc_build_setup.py: pass the package directory once, on every\n  platform, as -DPYCBC_MODULE_OUTPUT_DIRECTORY, replacing the global\n  -DCMAKE_LIBRARY_OUTPUT_DIRECTORY[_\u003cCONFIG\u003e] and the Windows-only\n  -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_\u003cCONFIG\u003e, which retargeted every\n  library, executable and DLL in the build tree rather than just the\n  extension module (on Windows that pulled BoringSSL\u0027s bssl.exe into\n  the wheel)\n* CMakeLists.txt: apply that path as a per-target property on\n  pycbc_core only, selecting the category by platform (RUNTIME for the\n  Windows DLL, LIBRARY everywhere else) and pointing\n  PDB_OUTPUT_DIRECTORY at the build tree, including the per-config\n  variants that multi-config generators require\n* CMakeLists.txt: warn when PYCBC_MODULE_OUTPUT_DIRECTORY is unset;\n  nothing else places the module, so the wheel would otherwise be\n  packed without an extension and fail at import instead of at build\n  time\n* Modernize license metadata to SPDX (license\u003d\"Apache-2.0\",\n  license_files), drop the now-deprecated OSI classifier, and raise\n  the setuptools floor to \u003e\u003d70.1\n\nChange-Id: I0f80fa57dd775df007600bf51f10007529a91c9b\nReviewed-on: https://review.couchbase.org/c/couchbase-python-client/+/250742\nTested-by: Build Bot \u003cbuild@couchbase.com\u003e\nReviewed-by: Dimitris Christodoulou \u003cdimitris.christodoulou@couchbase.com\u003e\n"},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"cf977c7016e5843c1a3168a885aa75a7a09c775a","is_merged_in_target_branch":true,"change_id":"I603b48b2a083f4a92fa19254499941144f155fa1","change_number":251068,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":1000011,"name":"Build Bot","email":"build@couchbase.com","username":"buildbot","avatars":[{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0ba35a43c05d6329d9b2136bab05a733.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}},{"label":"Well-Formed","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dMAX -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX","-label:Verified\u003dMIN"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"],"failing_atoms":[]}}]}
