)]}'
{"setup.cfg":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3426ea28f7e78d8a1c33d7021b340401b2cf6a61","unresolved":false,"context_lines":[{"line_number":27,"context_line":"tooz.backends \u003d"},{"line_number":28,"context_line":"    etcd \u003d tooz.drivers.etcd:EtcdDriver"},{"line_number":29,"context_line":"    etcd3 \u003d tooz.drivers.etcd3:Etcd3Driver"},{"line_number":30,"context_line":"    etcd3gw \u003d tooz.drivers.etcd3gw:Etcd3Driver"},{"line_number":31,"context_line":"    kazoo \u003d tooz.drivers.zookeeper:KazooDriver"},{"line_number":32,"context_line":"    zake \u003d tooz.drivers.zake:ZakeDriver"},{"line_number":33,"context_line":"    memcached \u003d tooz.drivers.memcached:MemcachedDriver"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"ff0f0b1f_1e8ec62d","line":30,"updated":"2017-05-20 16:16:11.000000000","message":"etcd3+http?","commit_id":"fd9a0e88bca84870e38c88b47db288dda3b1f51c"}],"tooz/drivers/etcd3gw.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    if not isinstance(data, bytes_types):"},{"line_number":41,"context_line":"        data \u003d six.b(str(data))"},{"line_number":42,"context_line":"    return base64.b64encode(data).decode(\"utf-8\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_30ee40ed","line":41,"updated":"2017-05-22 12:16:21.000000000","message":"Do we really need to handle all possible types? I\u0027d limit to string if possible, and use encode to get bytes. AFAIU, the key is set just below, there is no need to do that.","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c7732c85879bc2f9cda4849c23b43aab6d3cae92","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    if not isinstance(data, bytes_types):"},{"line_number":41,"context_line":"        data \u003d six.b(str(data))"},{"line_number":42,"context_line":"    return base64.b64encode(data).decode(\"utf-8\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_b0b5b080","line":41,"in_reply_to":"ff0f0b1f_30ee40ed","updated":"2017-05-22 12:25:28.000000000","message":"fixed :)","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        if shared:"},{"line_number":88,"context_line":"            raise tooz.NotImplemented"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        blocking, timeout \u003d utils.convert_blocking(blocking)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        @_retry.retry(stop_max_delay\u003dblocking)"},{"line_number":93,"context_line":"        def _acquire():"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_50265417","line":90,"updated":"2017-05-22 12:16:21.000000000","message":"timeout is not used here, isn\u0027t meant to be passed as stop_max_delay below?","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c7732c85879bc2f9cda4849c23b43aab6d3cae92","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        if shared:"},{"line_number":88,"context_line":"            raise tooz.NotImplemented"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        blocking, timeout \u003d utils.convert_blocking(blocking)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        @_retry.retry(stop_max_delay\u003dblocking)"},{"line_number":93,"context_line":"        def _acquire():"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_b043706c","line":90,"in_reply_to":"ff0f0b1f_50265417","updated":"2017-05-22 12:25:28.000000000","message":"Right, actually the conversion is not needed, and using blocking as arg directly is ok, fixed","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                }]"},{"line_number":117,"context_line":"            }"},{"line_number":118,"context_line":"            result \u003d self._coord.client.transaction(txn)"},{"line_number":119,"context_line":"            success \u003d result[\u0027succeeded\u0027] if\u0027succeeded\u0027 in result else False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            if success is not True:"},{"line_number":122,"context_line":"                if blocking is False:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_d095c434","line":119,"updated":"2017-05-22 12:16:21.000000000","message":"success \u003d \u0027succeeded\u0027 in result","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c7732c85879bc2f9cda4849c23b43aab6d3cae92","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                }]"},{"line_number":117,"context_line":"            }"},{"line_number":118,"context_line":"            result \u003d self._coord.client.transaction(txn)"},{"line_number":119,"context_line":"            success \u003d result[\u0027succeeded\u0027] if\u0027succeeded\u0027 in result else False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            if success is not True:"},{"line_number":122,"context_line":"                if blocking is False:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_d3538e16","line":119,"in_reply_to":"ff0f0b1f_d095c434","updated":"2017-05-22 12:25:28.000000000","message":"no actually it\u0027s the value inside we want (which can be false I imagine)","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            success \u003d result[\u0027succeeded\u0027] if\u0027succeeded\u0027 in result else False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            if success is not True:"},{"line_number":122,"context_line":"                if blocking is False:"},{"line_number":123,"context_line":"                    return False"},{"line_number":124,"context_line":"                raise _retry.TryAgain"},{"line_number":125,"context_line":"            self._coord._acquired_locks.add(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_90b4ecd2","line":122,"updated":"2017-05-22 12:16:21.000000000","message":"Any reason to do identical checks here? Especially as it\u0027s not done consistently in the class.","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c7732c85879bc2f9cda4849c23b43aab6d3cae92","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            success \u003d result[\u0027succeeded\u0027] if\u0027succeeded\u0027 in result else False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            if success is not True:"},{"line_number":122,"context_line":"                if blocking is False:"},{"line_number":123,"context_line":"                    return False"},{"line_number":124,"context_line":"                raise _retry.TryAgain"},{"line_number":125,"context_line":"            self._coord._acquired_locks.add(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_9372b6ac","line":122,"in_reply_to":"ff0f0b1f_90b4ecd2","updated":"2017-05-22 12:25:28.000000000","message":"I don\u0027t see what you mean","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        }"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        result \u003d self._coord.client.transaction(txn)"},{"line_number":149,"context_line":"        success \u003d result[\u0027succeeded\u0027] if \u0027succeeded\u0027 in result else False"},{"line_number":150,"context_line":"        if success:"},{"line_number":151,"context_line":"            self._coord._acquired_locks.remove(self)"},{"line_number":152,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_f0de880f","line":149,"updated":"2017-05-22 12:16:21.000000000","message":"Same as above.","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    @_translate_failures"},{"line_number":156,"context_line":"    def break_(self):"},{"line_number":157,"context_line":"        # FIXME(jd) when pyetcd3 returns the status"},{"line_number":158,"context_line":"        # https://github.com/kragniz/python-etcd3/pull/126"},{"line_number":159,"context_line":"        self._coord.client.delete(self._key)"},{"line_number":160,"context_line":"        try:"},{"line_number":161,"context_line":"            self._coord._acquired_locks.remove(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_f02c4803","line":158,"updated":"2017-05-22 12:16:21.000000000","message":"You do have the status, no? At any rate that PR is irrelevant here.","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c7732c85879bc2f9cda4849c23b43aab6d3cae92","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    @_translate_failures"},{"line_number":156,"context_line":"    def break_(self):"},{"line_number":157,"context_line":"        # FIXME(jd) when pyetcd3 returns the status"},{"line_number":158,"context_line":"        # https://github.com/kragniz/python-etcd3/pull/126"},{"line_number":159,"context_line":"        self._coord.client.delete(self._key)"},{"line_number":160,"context_line":"        try:"},{"line_number":161,"context_line":"            self._coord._acquired_locks.remove(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_f000c803","line":158,"updated":"2017-05-22 12:25:28.000000000","message":"already fixed :)","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"cd18f77aeb6e9f49c3f8f99d12f222e1f3f130a3","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # https://github.com/kragniz/python-etcd3/pull/126"},{"line_number":159,"context_line":"        self._coord.client.delete(self._key)"},{"line_number":160,"context_line":"        try:"},{"line_number":161,"context_line":"            self._coord._acquired_locks.remove(self)"},{"line_number":162,"context_line":"        except KeyError:"},{"line_number":163,"context_line":"            pass"},{"line_number":164,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_b0ced02a","line":161,"updated":"2017-05-22 12:16:21.000000000","message":"You can use discard here, it won\u0027t raise KeyError.","commit_id":"bba051e5094b4a5d0d9f1235995fd432aade0cce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"ae4c797d7adb8019b6060beb7fac42f02978244b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            except KeyError:"},{"line_number":144,"context_line":"                pass"},{"line_number":145,"context_line":"            return True"},{"line_number":146,"context_line":"        return False"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @_translate_failures"},{"line_number":149,"context_line":"    def heartbeat(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_10f8dc46","line":146,"updated":"2017-05-22 12:16:55.000000000","message":"@dims: since etcd3gw returns the status I\u0027ve improved that method too","commit_id":"66a5a3577c3edf13ec91e07a87cd7911e1e84a51"}]}
