)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"8c1d7710595360c38628ef68aaaa1961b66f7523","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-01-28 14:56:19 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding a flow tag per applications for flow debug"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I69e93a80de878a676538f6249123d32fd147d286"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a461143_b45516fb","line":8,"updated":"2017-01-29 10:01:08.000000000","message":"better link to some launchpad issue , i.e bug for improving debugability of DR","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"}],"dragonflow/controller/common/constants.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"87a27c5e5e666d5400fca3a69dd960d3f37187c3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"all cookie\u0027s mask should be kept here to avoid conflict."},{"line_number":75,"context_line":"\"\"\""},{"line_number":76,"context_line":"GLOBAL_AGING_COOKIE_MASK \u003d 0x1"},{"line_number":77,"context_line":"APP_TAG_MASK \u003d 0xfe"},{"line_number":78,"context_line":"APP_TAG_SHIFT_LEVEL \u003d 1"},{"line_number":79,"context_line":"SECURITY_GROUP_RULE_COOKIE_MASK \u003d 0x1fffffffe"},{"line_number":80,"context_line":"SECURITY_GROUP_RULE_COOKIE_SHIFT_LEN \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_e4ff69a8","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":19},"updated":"2017-01-25 03:14:52.000000000","message":"does this mean we can only have 7 or 8 app at most?","commit_id":"79288fb3ce9692de223b14d704eeefecb42d4839"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"176d06e2d23f400bf0d124eb54b1a721024bfaf0","unresolved":false,"context_lines":[{"line_number":74,"context_line":"all cookie\u0027s mask should be kept here to avoid conflict."},{"line_number":75,"context_line":"\"\"\""},{"line_number":76,"context_line":"GLOBAL_AGING_COOKIE_MASK \u003d 0x1"},{"line_number":77,"context_line":"APP_TAG_MASK \u003d 0xfe"},{"line_number":78,"context_line":"APP_TAG_SHIFT_LEVEL \u003d 1"},{"line_number":79,"context_line":"SECURITY_GROUP_RULE_COOKIE_MASK \u003d 0x1fffffffe"},{"line_number":80,"context_line":"SECURITY_GROUP_RULE_COOKIE_SHIFT_LEN \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_5e13b35c","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":19},"in_reply_to":"5a3905b3_e4ff69a8","updated":"2017-01-25 18:10:15.000000000","message":"128","commit_id":"79288fb3ce9692de223b14d704eeefecb42d4839"}],"dragonflow/controller/df_base_app.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"8c766c70a1bb169f13a764a9216970b15101602e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from ryu.lib.packet import ethernet"},{"line_number":18,"context_line":"from ryu.lib.packet import packet"},{"line_number":19,"context_line":"from ryu.ofproto import ether"},{"line_number":20,"context_line":"from dragonflow.controller.common import constants as const, utils"},{"line_number":21,"context_line":"from dragonflow.controller import df_db_notifier"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_953aace5","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":66},"updated":"2017-01-23 16:50:50.000000000","message":"nit:These imports should be in two lines.","commit_id":"e82710bf77369961e7af25da4369f79a2ed9bdee"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"97ccb63be4908f363913279cc1160a2afbe426b8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":29,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":30,"context_line":"        \"\"\" A member property to allow flow debug tagging"},{"line_number":31,"context_line":"        can be in range of 2 - 254 \"\"\""},{"line_number":32,"context_line":"        self.app_tag \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def update_local_port(self, lport, original_lport):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_ec96ccee","line":31,"range":{"start_line":31,"start_character":27,"end_line":31,"end_character":34},"updated":"2017-01-23 15:41:35.000000000","message":"Actually the range is 0..0x7f since we shift it only bit left below..","commit_id":"e82710bf77369961e7af25da4369f79a2ed9bdee"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"8c766c70a1bb169f13a764a9216970b15101602e","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        cookie \u003d utils.set_aging_cookie_bits(cookie)"},{"line_number":87,"context_line":"        if (cookie_mask \u0026 const.APP_TAG_MASK) \u003d\u003d 0:"},{"line_number":88,"context_line":"            cookie |\u003d (self.app_tag \u003c\u003c 1)"},{"line_number":89,"context_line":"            cookie_mask |\u003d const.APP_TAG_MASK"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        message \u003d datapath.ofproto_parser.OFPFlowMod(datapath, cookie,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_f523f0ba","line":88,"range":{"start_line":88,"start_character":39,"end_line":88,"end_character":40},"updated":"2017-01-23 16:50:50.000000000","message":"Please make this a constant too","commit_id":"e82710bf77369961e7af25da4369f79a2ed9bdee"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"87a27c5e5e666d5400fca3a69dd960d3f37187c3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.db_store \u003d db_store"},{"line_number":30,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":31,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":32,"context_line":"        \"\"\" A member property to allow flow debug tagging"},{"line_number":33,"context_line":"            can be in range of 0 - 254 in steps of 2(0-127)*2"},{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        self.app_tag \u003d None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def update_local_port(self, lport, original_lport):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_2403310f","line":34,"range":{"start_line":32,"start_character":0,"end_line":34,"end_character":11},"updated":"2017-01-25 03:14:52.000000000","message":"I don\u0027t think an attribute deserves a docstring, pls use # to comment the code.","commit_id":"79288fb3ce9692de223b14d704eeefecb42d4839"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"87a27c5e5e666d5400fca3a69dd960d3f37187c3","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        cookie \u003d utils.set_aging_cookie_bits(cookie)"},{"line_number":90,"context_line":"        if (cookie_mask \u0026 const.APP_TAG_MASK) \u003d\u003d 0:"},{"line_number":91,"context_line":"            cookie |\u003d (self.app_tag \u003c\u003c const.APP_TAG_SHIFT_LEVEL )"},{"line_number":92,"context_line":"            cookie_mask |\u003d const.APP_TAG_MASK"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        message \u003d datapath.ofproto_parser.OFPFlowMod(datapath, cookie,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_84f865c6","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":66},"updated":"2017-01-25 03:14:52.000000000","message":"self.app_tag ranges from 0 to n, when it is 0. cookie will +\u003d 1, this conflict with the aging app.","commit_id":"79288fb3ce9692de223b14d704eeefecb42d4839"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"44720e91265081573fbce6a52da43c62151413db","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        cookie \u003d utils.set_aging_cookie_bits(cookie)"},{"line_number":90,"context_line":"        if (cookie_mask \u0026 const.APP_TAG_MASK) \u003d\u003d 0:"},{"line_number":91,"context_line":"            cookie |\u003d (self.app_tag \u003c\u003c const.APP_TAG_SHIFT_LEVEL )"},{"line_number":92,"context_line":"            cookie_mask |\u003d const.APP_TAG_MASK"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        message \u003d datapath.ofproto_parser.OFPFlowMod(datapath, cookie,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_c42502c3","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":66},"in_reply_to":"3a461143_7881668f","updated":"2017-01-26 02:59:44.000000000","message":"yes, I must be think about something else, and mistake this park, sorry for that.","commit_id":"79288fb3ce9692de223b14d704eeefecb42d4839"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"176d06e2d23f400bf0d124eb54b1a721024bfaf0","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        cookie \u003d utils.set_aging_cookie_bits(cookie)"},{"line_number":90,"context_line":"        if (cookie_mask \u0026 const.APP_TAG_MASK) \u003d\u003d 0:"},{"line_number":91,"context_line":"            cookie |\u003d (self.app_tag \u003c\u003c const.APP_TAG_SHIFT_LEVEL )"},{"line_number":92,"context_line":"            cookie_mask |\u003d const.APP_TAG_MASK"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        message \u003d datapath.ofproto_parser.OFPFlowMod(datapath, cookie,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_7881668f","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":66},"in_reply_to":"5a3905b3_84f865c6","updated":"2017-01-25 18:10:15.000000000","message":"cookie will be 0","commit_id":"79288fb3ce9692de223b14d704eeefecb42d4839"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"97590561bc684c0da2a6cfb4323e7748230457a6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.db_store \u003d db_store"},{"line_number":30,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":31,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":32,"context_line":"        \"\"\" A member property to allow flow debug tagging"},{"line_number":33,"context_line":"            can be in range of 0 - 254 in steps of 2(0-127)*2"},{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        self.app_tag \u003d None"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_31a93825","line":33,"range":{"start_line":32,"start_character":12,"end_line":33,"end_character":61},"updated":"2017-01-29 08:33:07.000000000","message":"nit: Maybe rephrase:\n\nA debug tag for the application. Values: 0-127.\nWhen encoded on the flow cookie, shifted left by 1 (multiplied by 2).","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"8c1d7710595360c38628ef68aaaa1961b66f7523","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.db_store \u003d db_store"},{"line_number":30,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":31,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":32,"context_line":"        \"\"\" A member property to allow flow debug tagging"},{"line_number":33,"context_line":"            can be in range of 0 - 254 in steps of 2(0-127)*2"},{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        self.app_tag \u003d None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def update_local_port(self, lport, original_lport):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_d45aa229","line":34,"range":{"start_line":32,"start_character":7,"end_line":34,"end_character":11},"updated":"2017-01-29 10:01:08.000000000","message":"why is this info in the middle of the method? Suggest to add it into the dev reference","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"43ba2d09ca40fcb44cc1e2bd9c97296d197cac14","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.db_store \u003d db_store"},{"line_number":30,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":31,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":32,"context_line":"        \"\"\" A member property to allow flow debug tagging"},{"line_number":33,"context_line":"            can be in range of 0 - 254 in steps of 2(0-127)*2"},{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        self.app_tag \u003d None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def update_local_port(self, lport, original_lport):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_344da6c4","line":34,"range":{"start_line":32,"start_character":7,"end_line":34,"end_character":11},"in_reply_to":"3a461143_d45aa229","updated":"2017-01-29 13:44:02.000000000","message":"I also agree a dev reference is a good idea, I thinks it does not belong to this patch.\n\nAt this point it can be used as a comment for the knowledgeable devloper","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"8c1d7710595360c38628ef68aaaa1961b66f7523","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            out_group \u003d datapath.ofproto.OFPG_ANY"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        cookie \u003d utils.set_aging_cookie_bits(cookie)"},{"line_number":102,"context_line":"        if (cookie_mask \u0026 const.APP_TAG_MASK) \u003d\u003d 0:"},{"line_number":103,"context_line":"            cookie |\u003d (self.app_tag \u003c\u003c const.APP_TAG_SHIFT_LEVEL)"},{"line_number":104,"context_line":"            cookie_mask |\u003d const.APP_TAG_MASK"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        message \u003d datapath.ofproto_parser.OFPFlowMod(datapath, cookie,"},{"line_number":107,"context_line":"                                                     cookie_mask,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_943e5a8a","line":104,"range":{"start_line":102,"start_character":11,"end_line":104,"end_character":45},"updated":"2017-01-29 10:01:08.000000000","message":"better to extract it to separate method","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"21391430b4eb3f99dd90405c867e86bd4bb45231","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.db_store \u003d db_store"},{"line_number":30,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":31,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":32,"context_line":"        \"\"\""},{"line_number":33,"context_line":"        A debug tag for the application. Values: 0-127."},{"line_number":34,"context_line":"        When encoded on the flow cookie, shifted left by 1 (multiplied by 2)."},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        self.app_tag \u003d None"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_772d70fd","line":34,"range":{"start_line":32,"start_character":0,"end_line":34,"end_character":31},"updated":"2017-01-29 13:23:18.000000000","message":"Just a nit, \n\n\n # A multi-line comment would be\n # more appropriate here","commit_id":"7fe252671a15e496462f5c1426d9192bd716e9d5"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7731e8393745e2489236b69daa9ecf12db87444d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":31,"context_line":"        \"\"\""},{"line_number":32,"context_line":"        A debug tag for the application. Values: 0-127."},{"line_number":33,"context_line":"        When encoded on the flow cookie, shifted left by 1 (multiplied by 2)."},{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        self.app_tag \u003d None"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_721cee13","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":77},"updated":"2017-02-05 20:10:45.000000000","message":"This comment is no longer accurate.","commit_id":"f02a53d825c694216bcfed0a42aa44215224d678"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"529bcabd812e18ed44b5baa79ccfb9bd25d13231","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.db_store \u003d db_store"},{"line_number":29,"context_line":"        self.vswitch_api \u003d vswitch_api"},{"line_number":30,"context_line":"        self.nb_api \u003d nb_api"},{"line_number":31,"context_line":"        #A debug tag for the application."},{"line_number":32,"context_line":"        self.app_tag \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def update_local_port(self, lport, original_lport):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_6b61d9a8","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":11},"updated":"2017-02-15 03:20:30.000000000","message":"Note that the E265 is guarding the gate now, and this breaks that rule.","commit_id":"f832ee0df8ad613e32c3fe5989732ad9818e178f"}],"dragonflow/controller/dispatcher.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"97590561bc684c0da2a6cfb4323e7748230457a6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.apps \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def load(self, *args, **kwargs):"},{"line_number":30,"context_line":"        for tag, app in enumerate(self.apps_list):"},{"line_number":31,"context_line":"            app_class_name \u003d self.apps_location_prefix + \".\" + app"},{"line_number":32,"context_line":"            try:"},{"line_number":33,"context_line":"                app_class \u003d importutils.import_class(app_class_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_7165801c","line":30,"updated":"2017-01-29 08:33:07.000000000","message":"nit: This means tags start from 0. I thought tag\u003d0 is a special case.","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"43ba2d09ca40fcb44cc1e2bd9c97296d197cac14","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.apps \u003d []"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def load(self, *args, **kwargs):"},{"line_number":30,"context_line":"        for tag, app in enumerate(self.apps_list):"},{"line_number":31,"context_line":"            app_class_name \u003d self.apps_location_prefix + \".\" + app"},{"line_number":32,"context_line":"            try:"},{"line_number":33,"context_line":"                app_class \u003d importutils.import_class(app_class_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_97f57c58","line":30,"in_reply_to":"3a461143_7165801c","updated":"2017-01-29 13:44:02.000000000","message":"Yes. it starts form Zero.","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"8c1d7710595360c38628ef68aaaa1961b66f7523","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                app_class \u003d importutils.import_class(app_class_name)"},{"line_number":34,"context_line":"                app \u003d app_class(*args, **kwargs)"},{"line_number":35,"context_line":"                app.app_tag \u003d tag"},{"line_number":36,"context_line":"                LOG.info(_LI(\"Application %(app)s has tag %(tag)s\"),"},{"line_number":37,"context_line":"                        {\u0027app\u0027: app_class_name, \u0027tag\u0027: tag})"},{"line_number":38,"context_line":"                self.apps.append(app)"},{"line_number":39,"context_line":"            except ImportError as e:"},{"line_number":40,"context_line":"                LOG.exception(_LE(\"Error loading application by class, %s\"), e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_b43fd685","line":37,"range":{"start_line":36,"start_character":15,"end_line":37,"end_character":60},"updated":"2017-01-29 10:01:08.000000000","message":"maybe worth to dump it into some file","commit_id":"caeb2742e1a640e639a7746d6f60ad1b88892a92"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"529bcabd812e18ed44b5baa79ccfb9bd25d13231","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            try:"},{"line_number":37,"context_line":"                app_class \u003d importutils.import_class(app_class_name)"},{"line_number":38,"context_line":"                app \u003d app_class(*args, **kwargs)"},{"line_number":39,"context_line":"                app.app_tag \u003d tag"},{"line_number":40,"context_line":"                LOG.info(_LI(\"Application %(app)s has tag %(tag)s\"),"},{"line_number":41,"context_line":"                        {\u0027app\u0027: app_class_name, \u0027tag\u0027: tag})"},{"line_number":42,"context_line":"                self.apps.append(app)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_4bfed5ae","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":33},"updated":"2017-02-15 03:20:30.000000000","message":"Can the app_tag be updated in kwargs and initialized in a normal parameter way?","commit_id":"f832ee0df8ad613e32c3fe5989732ad9818e178f"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"3508572bb4c164622e1f53645fa5ebc61ce836e7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            try:"},{"line_number":37,"context_line":"                app_class \u003d importutils.import_class(app_class_name)"},{"line_number":38,"context_line":"                app \u003d app_class(*args, **kwargs)"},{"line_number":39,"context_line":"                app.app_tag \u003d tag"},{"line_number":40,"context_line":"                LOG.info(_LI(\"Application %(app)s has tag %(tag)s\"),"},{"line_number":41,"context_line":"                        {\u0027app\u0027: app_class_name, \u0027tag\u0027: tag})"},{"line_number":42,"context_line":"                self.apps.append(app)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da36d5c6_bd52e9db","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":33},"in_reply_to":"fa31d9ce_4bfed5ae","updated":"2017-02-19 14:16:28.000000000","message":"It\u0027s an option. I\u0027ll consider it.","commit_id":"f832ee0df8ad613e32c3fe5989732ad9818e178f"}]}
