)]}'
{"neutron/api/extensions.py":[{"author":{"_account_id":25618,"name":"Paweł Suder","email":"pawel@suder.info","username":"SuderPawel"},"change_message_id":"fb8fc62f9e2caeba384f360f9b88f8181bf0ee57","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        for ext in processed_exts.values():"},{"line_number":378,"context_line":"            ext.update_attributes_map(attr_map)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def _existing_sub_resource(self, resource):"},{"line_number":381,"context_line":"        return (len(resource) \u003d\u003d 2 and"},{"line_number":382,"context_line":"                \u0027parent\u0027 in resource and"},{"line_number":383,"context_line":"                isinstance(resource[\u0027parent\u0027], dict) and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_cf669252","line":380,"range":{"start_line":380,"start_character":8,"end_line":380,"end_character":30},"updated":"2017-10-19 10:07:32.000000000","message":"Shouldn\u0027t be named `_is_sub_resource`?","commit_id":"a5e566c1e043174ffba925940980f9ddd18553cc"},{"author":{"_account_id":25618,"name":"Paweł Suder","email":"pawel@suder.info","username":"SuderPawel"},"change_message_id":"fb8fc62f9e2caeba384f360f9b88f8181bf0ee57","unresolved":false,"context_lines":[{"line_number":378,"context_line":"            ext.update_attributes_map(attr_map)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def _existing_sub_resource(self, resource):"},{"line_number":381,"context_line":"        return (len(resource) \u003d\u003d 2 and"},{"line_number":382,"context_line":"                \u0027parent\u0027 in resource and"},{"line_number":383,"context_line":"                isinstance(resource[\u0027parent\u0027], dict) and"},{"line_number":384,"context_line":"                \u0027member_name\u0027 in resource[\u0027parent\u0027] and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_4fc86254","line":381,"range":{"start_line":381,"start_character":16,"end_line":381,"end_character":34},"updated":"2017-10-19 10:07:32.000000000","message":"Why resource\u0027s len should be 2? Is it because of definition of dict with key `parent` used in SUB_RESOURCE_ATTRIBUTE_MAP?","commit_id":"a5e566c1e043174ffba925940980f9ddd18553cc"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"52bc6a6419608aeadb8c144d3916e2ad24bd93cf","unresolved":false,"context_lines":[{"line_number":378,"context_line":"            ext.update_attributes_map(attr_map)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def _existing_sub_resource(self, resource):"},{"line_number":381,"context_line":"        return (len(resource) \u003d\u003d 2 and"},{"line_number":382,"context_line":"                \u0027parent\u0027 in resource and"},{"line_number":383,"context_line":"                isinstance(resource[\u0027parent\u0027], dict) and"},{"line_number":384,"context_line":"                \u0027member_name\u0027 in resource[\u0027parent\u0027] and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_c35b0985","line":381,"range":{"start_line":381,"start_character":16,"end_line":381,"end_character":34},"in_reply_to":"3f4b6375_4fc86254","updated":"2017-10-19 13:02:07.000000000","message":"A sub-resource dict has two keys \"parent\" and \"parameters\". This len(2) check is to lower the oods of identifying a resource having \"parent\" and \"parameters\" attributes and other attributes, as a sub-resource.\n\nPerhaps the check for \"\u0027member_name\u0027 in resource[\u0027parent\u0027]\" is sufficient and the len check not useful.","commit_id":"a5e566c1e043174ffba925940980f9ddd18553cc"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"03fe23a638c9402fd1ebc3a1860f3ef198f87dd4","unresolved":false,"context_lines":[{"line_number":378,"context_line":"            ext.update_attributes_map(attr_map)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def _existing_sub_resource(self, resource):"},{"line_number":381,"context_line":"        return (len(resource) \u003d\u003d 2 and"},{"line_number":382,"context_line":"                \u0027parent\u0027 in resource and"},{"line_number":383,"context_line":"                isinstance(resource[\u0027parent\u0027], dict) and"},{"line_number":384,"context_line":"                \u0027member_name\u0027 in resource[\u0027parent\u0027] and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_82d01df9","line":381,"range":{"start_line":381,"start_character":16,"end_line":381,"end_character":34},"in_reply_to":"3f4b6375_63ae952f","updated":"2017-11-01 22:29:29.000000000","message":"Let\u0027s remove the 2 check","commit_id":"a5e566c1e043174ffba925940980f9ddd18553cc"},{"author":{"_account_id":25618,"name":"Paweł Suder","email":"pawel@suder.info","username":"SuderPawel"},"change_message_id":"1d8ed7d72b844c25eadf841d6195b29f106848c1","unresolved":false,"context_lines":[{"line_number":378,"context_line":"            ext.update_attributes_map(attr_map)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def _existing_sub_resource(self, resource):"},{"line_number":381,"context_line":"        return (len(resource) \u003d\u003d 2 and"},{"line_number":382,"context_line":"                \u0027parent\u0027 in resource and"},{"line_number":383,"context_line":"                isinstance(resource[\u0027parent\u0027], dict) and"},{"line_number":384,"context_line":"                \u0027member_name\u0027 in resource[\u0027parent\u0027] and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_63ae952f","line":381,"range":{"start_line":381,"start_character":16,"end_line":381,"end_character":34},"in_reply_to":"3f4b6375_c35b0985","updated":"2017-10-19 13:05:58.000000000","message":"Yeap, I guess checking if key is in dict should be enough. Maybe check `isinstance` is additional safe-type thing in duck typing world. For me it looks fine.","commit_id":"a5e566c1e043174ffba925940980f9ddd18553cc"}]}
