)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"35be8d88f84404671c5d392f6a4b5e2d3d37630e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use dict comprehension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As python 2.6 doesn\u0027t be supported any more, we should use dict"},{"line_number":10,"context_line":"comprehension to let code more concise."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ic06fa7acd9f60674ea4627581cdc878319e23412"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a29b11f_a14e2e94","line":10,"updated":"2015-10-20 17:33:36.000000000","message":"How about  \"As python 2.6 is not supported any more, we should use dict comprehension for concise  code\"","commit_id":"c8dee0444df6a349940c9479124919c57c12d7f6"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"cd8db5a4e4f9bdf970eba71e8adc2760370cddac","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use dict comprehension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As python 2.6 doesn\u0027t be supported any more, we should use dict"},{"line_number":10,"context_line":"comprehension to let code more concise."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ic06fa7acd9f60674ea4627581cdc878319e23412"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a29b11f_53bcbedb","line":10,"in_reply_to":"3a29b11f_a14e2e94","updated":"2015-10-21 00:59:51.000000000","message":"Thanks!","commit_id":"c8dee0444df6a349940c9479124919c57c12d7f6"}],"glance/api/property_protections.py":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"13e3a8a8a29592172536fd9effffcf316a100d9e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        extra_props \u003d kwargs.pop(\u0027extra_properties\u0027, {})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        extra_properties \u003d {}"},{"line_number":36,"context_line":"        for key in list(extra_props.keys()):"},{"line_number":37,"context_line":"            if self.property_rules.check_property_rules(key, \u0027create\u0027,"},{"line_number":38,"context_line":"                                                        self.context):"},{"line_number":39,"context_line":"                extra_properties[key] \u003d extra_props[key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_378b076a","line":36,"updated":"2015-10-16 12:37:53.000000000","message":"Hmm, it works good in py3.4.\nCould you please explain why we need mutable copy here?","commit_id":"650cc070c704f47c1b09a1fc8290d7eca259def7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"8b2f6898417fa4ade16aa7ef87450ebd81dab05f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        extra_props \u003d kwargs.pop(\u0027extra_properties\u0027, {})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        extra_properties \u003d {}"},{"line_number":36,"context_line":"        for key in list(extra_props.keys()):"},{"line_number":37,"context_line":"            if self.property_rules.check_property_rules(key, \u0027create\u0027,"},{"line_number":38,"context_line":"                                                        self.context):"},{"line_number":39,"context_line":"                extra_properties[key] \u003d extra_props[key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_f26d2bcd","line":36,"in_reply_to":"3a29b11f_17177952","updated":"2015-10-19 09:31:18.000000000","message":"when we want to use some function of \u0027list\u0027, such as \u0027append\u0027 or \u0027remove\u0027, the dict.keys() should be transported to list. But there is no need here. It\u0027s my fault. Thanks, Kairat.","commit_id":"650cc070c704f47c1b09a1fc8290d7eca259def7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"eb068d50f128f7ecc2e38b1f61b2eed4cb7fc3da","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        extra_props \u003d kwargs.pop(\u0027extra_properties\u0027, {})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        extra_properties \u003d {}"},{"line_number":36,"context_line":"        for key in list(extra_props.keys()):"},{"line_number":37,"context_line":"            if self.property_rules.check_property_rules(key, \u0027create\u0027,"},{"line_number":38,"context_line":"                                                        self.context):"},{"line_number":39,"context_line":"                extra_properties[key] \u003d extra_props[key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_8075eefa","line":36,"in_reply_to":"5a2ca52d_378b076a","updated":"2015-10-16 14:09:59.000000000","message":"Sure, in python3, dict.keys() return a dict_keys object, which likes dict.iterkeys()  in python2. Here trans it to list to ensure the for cycle could work well completely. \nIt\u0027s my falut that I haven\u0027t test in python3. So there is some work to go on. I\u0027ll check it later. Thanks, Kairat.","commit_id":"650cc070c704f47c1b09a1fc8290d7eca259def7"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"08faf80dfa34b4b94404ab1a9c7e2b59e6cdba01","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        extra_props \u003d kwargs.pop(\u0027extra_properties\u0027, {})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        extra_properties \u003d {}"},{"line_number":36,"context_line":"        for key in list(extra_props.keys()):"},{"line_number":37,"context_line":"            if self.property_rules.check_property_rules(key, \u0027create\u0027,"},{"line_number":38,"context_line":"                                                        self.context):"},{"line_number":39,"context_line":"                extra_properties[key] \u003d extra_props[key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_17177952","line":36,"in_reply_to":"5a2ca52d_8075eefa","updated":"2015-10-19 09:27:22.000000000","message":"AFAIK The main reason to have this \"list\" statement is because it copies the whole list and you can change it for your own purposes in cycle.","commit_id":"650cc070c704f47c1b09a1fc8290d7eca259def7"}]}
