)]}'
{"dragonflow/db/drivers/etcd_db_driver.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"256f2578ffaad664bb41581b11c0e76091ea239c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from socket import timeout as SocketTimeout"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import etcd3gw as etcd"},{"line_number":17,"context_line":"# import etcd3 as etcd"},{"line_number":18,"context_line":"from oslo_log import log"},{"line_number":19,"context_line":"import urllib3"},{"line_number":20,"context_line":"from urllib3 import connection"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_b8849d5f","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":22},"updated":"2017-08-01 08:04:58.000000000","message":"Please remove these kind of comments.","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"668c858a38532c7974ab57f993634e61d0163f7f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from socket import timeout as SocketTimeout"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import etcd3gw as etcd"},{"line_number":17,"context_line":"# import etcd3 as etcd"},{"line_number":18,"context_line":"from oslo_log import log"},{"line_number":19,"context_line":"import urllib3"},{"line_number":20,"context_line":"from urllib3 import connection"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_d829a19b","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":22},"in_reply_to":"df3967d1_b8849d5f","updated":"2017-08-01 08:33:06.000000000","message":"Sure. Will remove after I\u0027ll remove the WIP tag","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"256f2578ffaad664bb41581b11c0e76091ea239c","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.client.put(\u0027/\u0027 + table + \u0027/\u0027 + key, value)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def delete_key(self, table, key, topic\u003dNone):"},{"line_number":140,"context_line":"        # try:"},{"line_number":141,"context_line":"        LOG.error(\"trying to delete key {}/{}\".format(table, key))"},{"line_number":142,"context_line":"        deleted \u003d self.client.delete(\u0027/\u0027 + table + \u0027/\u0027 + key)"},{"line_number":143,"context_line":"        if deleted:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_787e356c","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":14},"updated":"2017-08-01 08:04:58.000000000","message":"Same here","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"668c858a38532c7974ab57f993634e61d0163f7f","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.client.put(\u0027/\u0027 + table + \u0027/\u0027 + key, value)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def delete_key(self, table, key, topic\u003dNone):"},{"line_number":140,"context_line":"        # try:"},{"line_number":141,"context_line":"        LOG.error(\"trying to delete key {}/{}\".format(table, key))"},{"line_number":142,"context_line":"        deleted \u003d self.client.delete(\u0027/\u0027 + table + \u0027/\u0027 + key)"},{"line_number":143,"context_line":"        if deleted:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_034b3a59","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":14},"in_reply_to":"df3967d1_787e356c","updated":"2017-08-01 08:33:06.000000000","message":"Same","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"256f2578ffaad664bb41581b11c0e76091ea239c","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def delete_key(self, table, key, topic\u003dNone):"},{"line_number":140,"context_line":"        # try:"},{"line_number":141,"context_line":"        LOG.error(\"trying to delete key {}/{}\".format(table, key))"},{"line_number":142,"context_line":"        deleted \u003d self.client.delete(\u0027/\u0027 + table + \u0027/\u0027 + key)"},{"line_number":143,"context_line":"        if deleted:"},{"line_number":144,"context_line":"            LOG.error(\"key {}/{} deleted\".format(table, key))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_3898adbe","line":141,"range":{"start_line":141,"start_character":12,"end_line":141,"end_character":17},"updated":"2017-08-01 08:04:58.000000000","message":"These are debug messages, not error messages. But I think they can be removed anyway.","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"668c858a38532c7974ab57f993634e61d0163f7f","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def delete_key(self, table, key, topic\u003dNone):"},{"line_number":140,"context_line":"        # try:"},{"line_number":141,"context_line":"        LOG.error(\"trying to delete key {}/{}\".format(table, key))"},{"line_number":142,"context_line":"        deleted \u003d self.client.delete(\u0027/\u0027 + table + \u0027/\u0027 + key)"},{"line_number":143,"context_line":"        if deleted:"},{"line_number":144,"context_line":"            LOG.error(\"key {}/{} deleted\".format(table, key))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_c3289287","line":141,"range":{"start_line":141,"start_character":12,"end_line":141,"end_character":17},"in_reply_to":"df3967d1_3898adbe","updated":"2017-08-01 08:33:06.000000000","message":"I know. I didn\u0027t wanted to remove all my debug messages yet.","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"256f2578ffaad664bb41581b11c0e76091ea239c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        while True:"},{"line_number":184,"context_line":"            try:"},{"line_number":185,"context_line":"                return self._allocate_unique_key(table)"},{"line_number":186,"context_line":"            except Exception as e:"},{"line_number":187,"context_line":"                pass"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def process_ha(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_18d8497d","line":186,"range":{"start_line":186,"start_character":28,"end_line":186,"end_character":33},"updated":"2017-08-01 08:04:58.000000000","message":"nit: Not needed","commit_id":"9a424f1de4625ce72aaa24ffb438f75e66cc7fc0"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"a14007952691d210d80225c87fb25045f9c5c9de","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.notify_callback \u003d None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def initialize(self, db_ip, db_port, **args):"},{"line_number":113,"context_line":"        # TODO(lihi) add support in multiple hosts"},{"line_number":114,"context_line":"        self.client \u003d etcd.client(host\u003ddb_ip, port\u003ddb_port)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def create_table(self, table):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_e0a9f07b","line":113,"range":{"start_line":113,"start_character":19,"end_line":113,"end_character":20},"updated":"2017-08-03 14:26:14.000000000","message":"Still missing","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"d50de480dbd40c68e31470ebd566eca7f1721a86","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        pass"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def get_key(self, table, key, topic\u003dNone):"},{"line_number":125,"context_line":"        value \u003d self.client.get(\u0027/\u0027 + table + \u0027/\u0027 + key)"},{"line_number":126,"context_line":"        if len(value) \u003e 0:"},{"line_number":127,"context_line":"            return value.pop()"},{"line_number":128,"context_line":"        raise df_exceptions.DBKeyNotFound(key\u003dkey)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_f7938fa2","line":125,"range":{"start_line":125,"start_character":55,"end_line":125,"end_character":56},"updated":"2017-08-05 08:28:03.000000000","message":"Nit: string concatenation might be a bit faster but I find \u0027/{table}/{key}\u0027.format(...) much easier to read.\n\nSame with the rest of path generation lines..\nMaybe you can just define a _make_key(table, id) that does that is use it everywhere.","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e104359982c1b45beaa6ca1a57dcaa77850394c0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        pass"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def get_key(self, table, key, topic\u003dNone):"},{"line_number":125,"context_line":"        value \u003d self.client.get(\u0027/\u0027 + table + \u0027/\u0027 + key)"},{"line_number":126,"context_line":"        if len(value) \u003e 0:"},{"line_number":127,"context_line":"            return value.pop()"},{"line_number":128,"context_line":"        raise df_exceptions.DBKeyNotFound(key\u003dkey)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_42dcd473","line":125,"range":{"start_line":125,"start_character":55,"end_line":125,"end_character":56},"in_reply_to":"bf3e73b7_f7938fa2","updated":"2017-08-06 14:59:00.000000000","message":"Good idea. Will change","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"d50de480dbd40c68e31470ebd566eca7f1721a86","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def get_all_entries(self, table, topic\u003dNone):"},{"line_number":142,"context_line":"        res \u003d []"},{"line_number":143,"context_line":"        directory \u003d self.client.get_prefix(\"/\" + table)"},{"line_number":144,"context_line":"        if len(directory) \u003c\u003d 0:"},{"line_number":145,"context_line":"            return res"},{"line_number":146,"context_line":"        for entry in directory:"},{"line_number":147,"context_line":"            value \u003d entry[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_57f25b08","line":144,"range":{"start_line":144,"start_character":10,"end_line":144,"end_character":31},"updated":"2017-08-05 08:28:03.000000000","message":"Can be negative length? Anyway, if directory is empty, below loop won\u0027t run and res will be returned anyway, so the condition is not really needed.","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e104359982c1b45beaa6ca1a57dcaa77850394c0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def get_all_entries(self, table, topic\u003dNone):"},{"line_number":142,"context_line":"        res \u003d []"},{"line_number":143,"context_line":"        directory \u003d self.client.get_prefix(\"/\" + table)"},{"line_number":144,"context_line":"        if len(directory) \u003c\u003d 0:"},{"line_number":145,"context_line":"            return res"},{"line_number":146,"context_line":"        for entry in directory:"},{"line_number":147,"context_line":"            value \u003d entry[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_22d9d082","line":144,"range":{"start_line":144,"start_character":10,"end_line":144,"end_character":31},"in_reply_to":"bf3e73b7_57f25b08","updated":"2017-08-06 14:59:00.000000000","message":"directory is a list, so it can\u0027t be negative.\nAnyway I\u0027ll remove it","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"d50de480dbd40c68e31470ebd566eca7f1721a86","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        key \u003d \u0027/unique_key/%s\u0027 % table"},{"line_number":163,"context_line":"        prev_value \u003d 0"},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            prev_value \u003d int(self.client.get(key).pop())"},{"line_number":166,"context_line":"            self.client.replace(key, str(prev_value), str(prev_value + 1))"},{"line_number":167,"context_line":"            return prev_value + 1"},{"line_number":168,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_77d67f52","line":165,"range":{"start_line":165,"start_character":34,"end_line":165,"end_character":55},"updated":"2017-08-05 08:28:03.000000000","message":"self.get_key(\u0027unique_key\u0027, table)","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e104359982c1b45beaa6ca1a57dcaa77850394c0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        key \u003d \u0027/unique_key/%s\u0027 % table"},{"line_number":163,"context_line":"        prev_value \u003d 0"},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            prev_value \u003d int(self.client.get(key).pop())"},{"line_number":166,"context_line":"            self.client.replace(key, str(prev_value), str(prev_value + 1))"},{"line_number":167,"context_line":"            return prev_value + 1"},{"line_number":168,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_02e6cc45","line":165,"range":{"start_line":165,"start_character":34,"end_line":165,"end_character":55},"in_reply_to":"bf3e73b7_77d67f52","updated":"2017-08-06 14:59:00.000000000","message":"Will change","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"d50de480dbd40c68e31470ebd566eca7f1721a86","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            prev_value \u003d int(self.client.get(key).pop())"},{"line_number":166,"context_line":"            self.client.replace(key, str(prev_value), str(prev_value + 1))"},{"line_number":167,"context_line":"            return prev_value + 1"},{"line_number":168,"context_line":"        except Exception:"},{"line_number":169,"context_line":"            if prev_value \u003d\u003d 0:"},{"line_number":170,"context_line":"                self.client.put(key, \"1\")"},{"line_number":171,"context_line":"                return 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_975fa3e4","line":168,"range":{"start_line":168,"start_character":15,"end_line":168,"end_character":24},"updated":"2017-08-05 08:28:03.000000000","message":"Better to use a more specific exception","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"d50de480dbd40c68e31470ebd566eca7f1721a86","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        while True:"},{"line_number":176,"context_line":"            try:"},{"line_number":177,"context_line":"                return self._allocate_unique_key(table)"},{"line_number":178,"context_line":"            except Exception:"},{"line_number":179,"context_line":"                pass"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def process_ha(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_57593bfc","line":178,"range":{"start_line":178,"start_character":19,"end_line":178,"end_character":28},"updated":"2017-08-05 08:28:03.000000000","message":"same here","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"51f1e10adaa657898b190d76cfdde206cdb34271","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        pass"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    @staticmethod"},{"line_number":125,"context_line":"    def _make_key(table, obj_id):"},{"line_number":126,"context_line":"        key \u003d \u0027/{}/{}\u0027.format(table, obj_id)"},{"line_number":127,"context_line":"        return key"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_02000f34","line":125,"range":{"start_line":125,"start_character":25,"end_line":125,"end_character":31},"updated":"2017-08-08 12:17:45.000000000","message":"Maybe make this optional, then it can be used in get_all_*","commit_id":"ab2a06d9e7bfe4fb204e8271f53c587667e4d46c"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"da9b13f2e2999cf2dfd76457cee1fcf57062f94d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        pass"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    @staticmethod"},{"line_number":125,"context_line":"    def _make_key(table, obj_id):"},{"line_number":126,"context_line":"        key \u003d \u0027/{}/{}\u0027.format(table, obj_id)"},{"line_number":127,"context_line":"        return key"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_7cb505ee","line":125,"range":{"start_line":125,"start_character":25,"end_line":125,"end_character":31},"in_reply_to":"9f436f4f_02000f34","updated":"2017-08-21 07:21:07.000000000","message":"Done","commit_id":"ab2a06d9e7bfe4fb204e8271f53c587667e4d46c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ec5e3c63c578215a0807750a7371febbb2e9fb66","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        res \u003d []"},{"line_number":144,"context_line":"        directory \u003d self.client.get_prefix(self._make_key(table))"},{"line_number":145,"context_line":"        for entry in directory:"},{"line_number":146,"context_line":"            table_name_size \u003d len(table) + 2"},{"line_number":147,"context_line":"            key \u003d entry[1][\"key\"]"},{"line_number":148,"context_line":"            res.append(key[table_name_size:])"},{"line_number":149,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_d582b2c8","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":44},"updated":"2017-08-23 08:41:00.000000000","message":"This could be moved outside of the loop","commit_id":"d153d3739812eb59e32798302490d84b462e7008"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"974e2af64a3c6ec47309efd0adbcc2e4f1dc7d5b","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        return res"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _allocate_unique_key(self, table):"},{"line_number":152,"context_line":"        key \u003d \u0027/unique_key/%s\u0027 % table"},{"line_number":153,"context_line":"        prev_value \u003d 0"},{"line_number":154,"context_line":"        try:"},{"line_number":155,"context_line":"            prev_value \u003d int(self.get_key(\u0027unique_key\u0027, table))"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_4c47574d","line":152,"range":{"start_line":152,"start_character":7,"end_line":152,"end_character":38},"updated":"2017-08-23 11:21:11.000000000","message":"nit: can be constructed with _make_key :)","commit_id":"d153d3739812eb59e32798302490d84b462e7008"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ec5e3c63c578215a0807750a7371febbb2e9fb66","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        prev_value \u003d 0"},{"line_number":154,"context_line":"        try:"},{"line_number":155,"context_line":"            prev_value \u003d int(self.get_key(\u0027unique_key\u0027, table))"},{"line_number":156,"context_line":"            # FIXME(lihi): race-condition?"},{"line_number":157,"context_line":"            self.client.replace(key, str(prev_value), str(prev_value + 1))"},{"line_number":158,"context_line":"            return prev_value + 1"},{"line_number":159,"context_line":"        except df_exceptions.DBKeyNotFound:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_b58726d8","line":156,"range":{"start_line":156,"start_character":0,"end_line":156,"end_character":42},"updated":"2017-08-23 08:41:00.000000000","message":"Yes, but not worse than we already had","commit_id":"d153d3739812eb59e32798302490d84b462e7008"}],"requirements.txt":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"d50de480dbd40c68e31470ebd566eca7f1721a86","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"pbr!\u003d2.1.0,\u003e\u003d2.0.0 # Apache-2.0"},{"line_number":6,"context_line":"Babel!\u003d2.4.0,\u003e\u003d2.3.4 # BSD"},{"line_number":7,"context_line":"python-etcd\u003e\u003d0.4.3 # MIT License"},{"line_number":8,"context_line":"etcd3gw\u003e\u003d0.1.0 # Apache-2.0"},{"line_number":9,"context_line":"cassandra-driver!\u003d3.6.0,\u003e\u003d2.1.4 # Apache-2.0"},{"line_number":10,"context_line":"kazoo\u003e\u003d2.2 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":2,"id":"bf3e73b7_375eb7e6","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":11},"updated":"2017-08-05 08:28:03.000000000","message":"can be removed?","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"e104359982c1b45beaa6ca1a57dcaa77850394c0","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"pbr!\u003d2.1.0,\u003e\u003d2.0.0 # Apache-2.0"},{"line_number":6,"context_line":"Babel!\u003d2.4.0,\u003e\u003d2.3.4 # BSD"},{"line_number":7,"context_line":"python-etcd\u003e\u003d0.4.3 # MIT License"},{"line_number":8,"context_line":"etcd3gw\u003e\u003d0.1.0 # Apache-2.0"},{"line_number":9,"context_line":"cassandra-driver!\u003d3.6.0,\u003e\u003d2.1.4 # Apache-2.0"},{"line_number":10,"context_line":"kazoo\u003e\u003d2.2 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":2,"id":"bf3e73b7_82f2bc05","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":11},"in_reply_to":"bf3e73b7_375eb7e6","updated":"2017-08-06 14:59:00.000000000","message":"Yes, will remove","commit_id":"92276d0bd6aa222ab22ffe725cf8c7de562e4a0c"}]}
