)]}'
{"networking_ovn/common/ovn_client.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a4082b8b96ec1daeb26420cf1ac039e5dd742c7c","unresolved":false,"context_lines":[{"line_number":987,"context_line":"            floatingip[\u0027id\u0027], floatingip, ovn_const.TYPE_FLOATINGIPS)"},{"line_number":988,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":989,"context_line":"            txn.add(check_rev_cmd)"},{"line_number":990,"context_line":"            if ovn_fip:"},{"line_number":991,"context_line":"                lrouter \u003d ovn_fip[\u0027external_ids\u0027].get("},{"line_number":992,"context_line":"                    ovn_const.OVN_ROUTER_NAME_EXT_ID_KEY,"},{"line_number":993,"context_line":"                    utils.ovn_name(router_id))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4ef2676b","line":990,"range":{"start_line":990,"start_character":13,"end_line":990,"end_character":23},"updated":"2020-01-21 13:15:08.000000000","message":"This is a part of [1]. Waiting for better solution.\n\n[1] https://review.opendev.org/#/c/703352/","commit_id":"1fca445ee77a71aef244538c7b3138c8c08cc7a6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"85ac7d9686b1ae508489a61e77478a8614601f8e","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            columns[\u0027external_ids\u0027] \u003d ext_ids"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        # TODO(mjozefcz): Remove this workaround when OVN LB"},{"line_number":749,"context_line":"        # will support both decentralized FIPs on LB and member."},{"line_number":750,"context_line":"        lb_member_fip \u003d self._is_lb_member_fip(context, floatingip)"},{"line_number":751,"context_line":"        if (config.is_ovn_distributed_floating_ip() and"},{"line_number":752,"context_line":"                lb_member_fip):"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_1c367450","line":749,"updated":"2020-01-29 16:02:53.000000000","message":"Do we have any trackers for these efforts ? I know OVN upstream does not have any bug tracker so perhaps some BZs in the Red Hat bugzilla","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"95a7de8659c4777730c5aee7f8574f834543b76b","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            columns[\u0027external_ids\u0027] \u003d ext_ids"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        # TODO(mjozefcz): Remove this workaround when OVN LB"},{"line_number":749,"context_line":"        # will support both decentralized FIPs on LB and member."},{"line_number":750,"context_line":"        lb_member_fip \u003d self._is_lb_member_fip(context, floatingip)"},{"line_number":751,"context_line":"        if (config.is_ovn_distributed_floating_ip() and"},{"line_number":752,"context_line":"                lb_member_fip):"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_9396c64a","line":749,"in_reply_to":"3fa7e38b_1c367450","updated":"2020-01-30 09:39:46.000000000","message":"I\u0027ll add. Thanks!","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"579bc157f975062ec13929860a37a6fb2fc2da4c","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            columns[\u0027external_ids\u0027] \u003d ext_ids"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        # TODO(mjozefcz): Remove this workaround when OVN LB"},{"line_number":749,"context_line":"        # will support both decentralized FIPs on LB and member."},{"line_number":750,"context_line":"        lb_member_fip \u003d self._is_lb_member_fip(context, floatingip)"},{"line_number":751,"context_line":"        if (config.is_ovn_distributed_floating_ip() and"},{"line_number":752,"context_line":"                lb_member_fip):"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_93bd66b4","line":749,"in_reply_to":"3fa7e38b_9396c64a","updated":"2020-01-30 10:29:48.000000000","message":"Added to commit msg.","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"85ac7d9686b1ae508489a61e77478a8614601f8e","unresolved":false,"context_lines":[{"line_number":758,"context_line":"                        \"this environment is configured as DVR. \""},{"line_number":759,"context_line":"                        \"Removing logical_port and external_mac from \""},{"line_number":760,"context_line":"                        \"NAT entry.\", floatingip[\u0027port_id\u0027])"},{"line_number":761,"context_line":"            try:"},{"line_number":762,"context_line":"                columns.pop(\u0027logical_port\u0027)"},{"line_number":763,"context_line":"                columns.pop(\u0027external_mac\u0027)"},{"line_number":764,"context_line":"            except KeyError:"},{"line_number":765,"context_line":"                pass"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        commands.append(self._nb_idl.add_nat_rule_in_lrouter(gw_lrouter_name,"},{"line_number":768,"context_line":"                                                             **columns))"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_8ffea801","line":765,"range":{"start_line":761,"start_character":0,"end_line":765,"end_character":20},"updated":"2020-01-29 16:02:53.000000000","message":"What if the logical_port is missing but external_mac is set ? That will throw an exception in the first line but the external_mac wouldn\u0027t be removed. Let\u0027s use the default parameter for pop() so that we do not need to handle any exception:\n\ncolumns.pop(\u0027logical_port\u0027, None)\ncolumns.pop(\u0027external_mac\u0027, None)","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"95a7de8659c4777730c5aee7f8574f834543b76b","unresolved":false,"context_lines":[{"line_number":758,"context_line":"                        \"this environment is configured as DVR. \""},{"line_number":759,"context_line":"                        \"Removing logical_port and external_mac from \""},{"line_number":760,"context_line":"                        \"NAT entry.\", floatingip[\u0027port_id\u0027])"},{"line_number":761,"context_line":"            try:"},{"line_number":762,"context_line":"                columns.pop(\u0027logical_port\u0027)"},{"line_number":763,"context_line":"                columns.pop(\u0027external_mac\u0027)"},{"line_number":764,"context_line":"            except KeyError:"},{"line_number":765,"context_line":"                pass"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"        commands.append(self._nb_idl.add_nat_rule_in_lrouter(gw_lrouter_name,"},{"line_number":768,"context_line":"                                                             **columns))"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_b393c259","line":765,"range":{"start_line":761,"start_character":0,"end_line":765,"end_character":20},"in_reply_to":"3fa7e38b_8ffea801","updated":"2020-01-30 09:39:46.000000000","message":"Ok, you\u0027re right. I\u0027ll update.","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"85ac7d9686b1ae508489a61e77478a8614601f8e","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            if not lb_member_fip:"},{"line_number":784,"context_line":"                commands.extend("},{"line_number":785,"context_line":"                    self._handle_lb_fip_cmds("},{"line_number":786,"context_line":"                        context, private_lsp, action\u003d\u0027associate\u0027))"},{"line_number":787,"context_line":"        else:"},{"line_number":788,"context_line":"            LOG.warning(\"LSP for floatingip %s, has not been found! \""},{"line_number":789,"context_line":"                        \"Cannot set FIP on VIP.\","}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_fc7278e3","line":786,"range":{"start_line":786,"start_character":46,"end_line":786,"end_character":64},"updated":"2020-01-29 16:02:53.000000000","message":"nit: These \"associate\" and \"disassociate\" could probably be constants (it\u0027s been used in multiple places)","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"579bc157f975062ec13929860a37a6fb2fc2da4c","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            if not lb_member_fip:"},{"line_number":784,"context_line":"                commands.extend("},{"line_number":785,"context_line":"                    self._handle_lb_fip_cmds("},{"line_number":786,"context_line":"                        context, private_lsp, action\u003d\u0027associate\u0027))"},{"line_number":787,"context_line":"        else:"},{"line_number":788,"context_line":"            LOG.warning(\"LSP for floatingip %s, has not been found! \""},{"line_number":789,"context_line":"                        \"Cannot set FIP on VIP.\","}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_3ec9d9aa","line":786,"range":{"start_line":786,"start_character":46,"end_line":786,"end_character":64},"in_reply_to":"3fa7e38b_137c1621","updated":"2020-01-30 10:29:48.000000000","message":"Added FIP_ACTION_ASSOCIATE/FIP_ACTION_DISASSOCIATE\n\nUnfortunately this is not in neutron-lib.","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"95a7de8659c4777730c5aee7f8574f834543b76b","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            if not lb_member_fip:"},{"line_number":784,"context_line":"                commands.extend("},{"line_number":785,"context_line":"                    self._handle_lb_fip_cmds("},{"line_number":786,"context_line":"                        context, private_lsp, action\u003d\u0027associate\u0027))"},{"line_number":787,"context_line":"        else:"},{"line_number":788,"context_line":"            LOG.warning(\"LSP for floatingip %s, has not been found! \""},{"line_number":789,"context_line":"                        \"Cannot set FIP on VIP.\","}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_137c1621","line":786,"range":{"start_line":786,"start_character":46,"end_line":786,"end_character":64},"in_reply_to":"3fa7e38b_fc7278e3","updated":"2020-01-30 09:39:46.000000000","message":"ok, will do","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"85ac7d9686b1ae508489a61e77478a8614601f8e","unresolved":false,"context_lines":[{"line_number":796,"context_line":"        member_subnet \u003d None"},{"line_number":797,"context_line":"        for fixed_ip in port[\u0027fixed_ips\u0027]:"},{"line_number":798,"context_line":"            if fixed_ip[\u0027ip_address\u0027] \u003d\u003d fip[\u0027fixed_ip_address\u0027]:"},{"line_number":799,"context_line":"                member_subnet \u003d fixed_ip[\u0027subnet_id\u0027]"},{"line_number":800,"context_line":"        if not member_subnet:"},{"line_number":801,"context_line":"            return False"},{"line_number":802,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_1c1f54b8","line":799,"updated":"2020-01-29 16:02:53.000000000","message":"nit: break the loop after we find the member_subnet ?\n\nFor performance perhaps a list comprehension would be better as well, as a suggestion:\n\n member_subnet \u003d [fix_ip[\u0027subnet_id\u0027] for fix_ip in port[\u0027fixed_ips\u0027]\n                  if fix_ip[\u0027ip_address\u0027] \u003d\u003d fip[\u0027fixed_ip_address\u0027]][-1:]\n if not member_subnet:\n     return False","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"95a7de8659c4777730c5aee7f8574f834543b76b","unresolved":false,"context_lines":[{"line_number":796,"context_line":"        member_subnet \u003d None"},{"line_number":797,"context_line":"        for fixed_ip in port[\u0027fixed_ips\u0027]:"},{"line_number":798,"context_line":"            if fixed_ip[\u0027ip_address\u0027] \u003d\u003d fip[\u0027fixed_ip_address\u0027]:"},{"line_number":799,"context_line":"                member_subnet \u003d fixed_ip[\u0027subnet_id\u0027]"},{"line_number":800,"context_line":"        if not member_subnet:"},{"line_number":801,"context_line":"            return False"},{"line_number":802,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_338112fc","line":799,"in_reply_to":"3fa7e38b_1c1f54b8","updated":"2020-01-30 09:39:46.000000000","message":"ok, will do","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f5f017e9dc9cf5531468a56825b1871e6996607a","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                                (\u0027logical_port\u0027, lsp.name)))"},{"line_number":924,"context_line":"                            port_net \u003d self._plugin.get_network("},{"line_number":925,"context_line":"                                context, member[\u0027network_id\u0027])"},{"line_number":926,"context_line":"                            if (port_net.get(pnet.NETWORK_TYPE) !\u003d"},{"line_number":927,"context_line":"                                    const.TYPE_VLAN):"},{"line_number":928,"context_line":"                                port \u003d self._plugin.get_port(context, lsp.name)"},{"line_number":929,"context_line":"                                if port[\u0027status\u0027] \u003d\u003d const.PORT_STATUS_ACTIVE:"},{"line_number":930,"context_line":"                                    commands.append("}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_1cbd1402","line":927,"range":{"start_line":926,"start_character":27,"end_line":927,"end_character":53},"updated":"2020-01-29 15:26:53.000000000","message":"As per last findings it potentially will not be needed. Right Lucas and Brian?","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"85ac7d9686b1ae508489a61e77478a8614601f8e","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                                (\u0027logical_port\u0027, lsp.name)))"},{"line_number":924,"context_line":"                            port_net \u003d self._plugin.get_network("},{"line_number":925,"context_line":"                                context, member[\u0027network_id\u0027])"},{"line_number":926,"context_line":"                            if (port_net.get(pnet.NETWORK_TYPE) !\u003d"},{"line_number":927,"context_line":"                                    const.TYPE_VLAN):"},{"line_number":928,"context_line":"                                port \u003d self._plugin.get_port(context, lsp.name)"},{"line_number":929,"context_line":"                                if port[\u0027status\u0027] \u003d\u003d const.PORT_STATUS_ACTIVE:"},{"line_number":930,"context_line":"                                    commands.append("}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_fc2038b3","line":927,"range":{"start_line":926,"start_character":27,"end_line":927,"end_character":53},"in_reply_to":"3fa7e38b_1cbd1402","updated":"2020-01-29 16:02:53.000000000","message":"I would say it\u0027s not needed","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"95a7de8659c4777730c5aee7f8574f834543b76b","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                                (\u0027logical_port\u0027, lsp.name)))"},{"line_number":924,"context_line":"                            port_net \u003d self._plugin.get_network("},{"line_number":925,"context_line":"                                context, member[\u0027network_id\u0027])"},{"line_number":926,"context_line":"                            if (port_net.get(pnet.NETWORK_TYPE) !\u003d"},{"line_number":927,"context_line":"                                    const.TYPE_VLAN):"},{"line_number":928,"context_line":"                                port \u003d self._plugin.get_port(context, lsp.name)"},{"line_number":929,"context_line":"                                if port[\u0027status\u0027] \u003d\u003d const.PORT_STATUS_ACTIVE:"},{"line_number":930,"context_line":"                                    commands.append("}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_d3751e36","line":927,"range":{"start_line":926,"start_character":27,"end_line":927,"end_character":53},"in_reply_to":"3fa7e38b_fc2038b3","updated":"2020-01-30 09:39:46.000000000","message":"Ok, I\u0027ll delete it.","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"}],"networking_ovn/ml2/mech_driver.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a4082b8b96ec1daeb26420cf1ac039e5dd742c7c","unresolved":false,"context_lines":[{"line_number":759,"context_line":"        if not self._nb_ovn:"},{"line_number":760,"context_line":"            self._nb_ovn \u003d self._ovn_client._nb_idl"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        # TODO(mjozefcz): Lookup for external_id."},{"line_number":763,"context_line":"        nat \u003d self._nb_ovn.db_find(\u0027NAT\u0027,"},{"line_number":764,"context_line":"                                   (\u0027logical_port\u0027, \u0027\u003d\u0027, port_id),"},{"line_number":765,"context_line":"                                   (\u0027type\u0027, \u0027\u003d\u0027, \u0027dnat_and_snat\u0027)).execute()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_6e8403b3","line":762,"range":{"start_line":762,"start_character":10,"end_line":762,"end_character":14},"updated":"2020-01-21 13:15:08.000000000","message":"Will need another patchy.","commit_id":"1fca445ee77a71aef244538c7b3138c8c08cc7a6"}],"networking_ovn/octavia/ovn_driver.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"0eee1dcbf860c89ee98b8f8c1cbdb59727e35c79","unresolved":false,"context_lines":[{"line_number":1793,"context_line":"            subnet \u003d network_driver.get_subnet(info[\u0027subnet_id\u0027])"},{"line_number":1794,"context_line":"            ls_name \u003d ovn_utils.ovn_name(subnet.network_id)"},{"line_number":1795,"context_line":"        except n_exc.NotFound:"},{"line_number":1796,"context_line":"            LOG.exception(\u0027Subnet %s not found while trying to \u0027"},{"line_number":1797,"context_line":"                          \u0027fetch its data.\u0027, info[\u0027subnet_id\u0027])"},{"line_number":1798,"context_line":"            return"},{"line_number":1799,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_46036e12","line":1796,"range":{"start_line":1796,"start_character":16,"end_line":1796,"end_character":25},"updated":"2020-01-16 09:46:26.000000000","message":"change to warning","commit_id":"10a0b857bab5508d9c1a3f552ff742fab31c87a1"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a4082b8b96ec1daeb26420cf1ac039e5dd742c7c","unresolved":false,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def _update_status_to_octavia(self, status):"},{"line_number":469,"context_line":"        try:"},{"line_number":470,"context_line":"            LOG.debug(\u0027status: %s\u0027, status)"},{"line_number":471,"context_line":"            self._octavia_driver_lib.update_loadbalancer_status(status)"},{"line_number":472,"context_line":"        except driver_exceptions.UpdateStatusError as e:"},{"line_number":473,"context_line":"            msg \u003d (\"Error while updating the load balancer \""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_2e8a8bbc","line":470,"range":{"start_line":470,"start_character":12,"end_line":470,"end_character":15},"updated":"2020-01-21 13:15:08.000000000","message":"To be dropped. Its updated in other patch.","commit_id":"1fca445ee77a71aef244538c7b3138c8c08cc7a6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"85ac7d9686b1ae508489a61e77478a8614601f8e","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"        try:"},{"line_number":1844,"context_line":"            ls \u003d self.ovn_nbdb_api.lookup(\u0027Logical_Switch\u0027, ls_name)"},{"line_number":1845,"context_line":"        except idlutils.RowNotFound:"},{"line_number":1846,"context_line":"            LOG.warning(\"Logical Switch %s not found.\""},{"line_number":1847,"context_line":"                        \"Can\u0027t verify member FIP configuration.\")"},{"line_number":1848,"context_line":"            return"},{"line_number":1849,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_fc5b5851","line":1846,"range":{"start_line":1846,"start_character":40,"end_line":1846,"end_character":42},"updated":"2020-01-29 16:02:53.000000000","message":"missing the ls_name as a parameter","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"95a7de8659c4777730c5aee7f8574f834543b76b","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"        try:"},{"line_number":1844,"context_line":"            ls \u003d self.ovn_nbdb_api.lookup(\u0027Logical_Switch\u0027, ls_name)"},{"line_number":1845,"context_line":"        except idlutils.RowNotFound:"},{"line_number":1846,"context_line":"            LOG.warning(\"Logical Switch %s not found.\""},{"line_number":1847,"context_line":"                        \"Can\u0027t verify member FIP configuration.\")"},{"line_number":1848,"context_line":"            return"},{"line_number":1849,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_f3729a4b","line":1846,"range":{"start_line":1846,"start_character":40,"end_line":1846,"end_character":42},"in_reply_to":"3fa7e38b_fc5b5851","updated":"2020-01-30 09:39:46.000000000","message":"Good catch. Thanks!!!","commit_id":"92396b16e215e77b48a55f50019b6be4d89f3a13"}]}
