)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8306354bd0dc388d08dd67507d0629a8d89c5d2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Cinder dropped python 2.6 support in Kilo, we can leverage this now."},{"line_number":16,"context_line":"There is deep dive about PEP-0274[2] and basic tests about"},{"line_number":17,"context_line":"performance[3]."},{"line_number":18,"context_line":"Note: This commit doesn\u0027t handle dict constructor with kwagrs."},{"line_number":19,"context_line":"This commit also adds a hacking rule."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[1]http://legacy.python.org/dev/peps/pep-0274/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a961159_009101f1","line":18,"updated":"2015-01-13 15:30:30.000000000","message":"kwargs*","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"50faf0540a97c1b4e4612069fb83ba06e05a4049","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Cinder dropped python 2.6 support in Kilo, we can leverage this now."},{"line_number":16,"context_line":"There is deep dive about PEP-0274[2] and basic tests about"},{"line_number":17,"context_line":"performance[3]."},{"line_number":18,"context_line":"Note: This commit doesn\u0027t handle dict constructor with kwagrs."},{"line_number":19,"context_line":"This commit also adds a hacking rule."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[1]http://legacy.python.org/dev/peps/pep-0274/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a930d6b_3f0f8ae2","line":18,"in_reply_to":"3a961159_009101f1","updated":"2015-01-27 03:18:24.000000000","message":"Done","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"63fc6173316cb95c571d4da0bcb39173fdf7678b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ChangBo Guo(gcb) \u003ceric.guo@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-27 11:26:14 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Permance: leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a930d6b_b4d6344d","line":7,"updated":"2015-01-27 10:34:03.000000000","message":"Performance?\n\ndouble-space between leverage and dict.","commit_id":"d7a7b5f25f5e695a104aa70816b51af2797e92d6"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"63fc6173316cb95c571d4da0bcb39173fdf7678b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Permance: leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"},{"line_number":11,"context_line":"  The dictionary constructor approach has two distinct disadvantages"},{"line_number":12,"context_line":"  from the proposed syntax though.  First, it isn\u0027t as legible as a"},{"line_number":13,"context_line":"  dict comprehension.  Second, it forces the programmer to create an"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a930d6b_f4cc3cbd","line":10,"updated":"2015-01-27 10:34:03.000000000","message":"sequence","commit_id":"d7a7b5f25f5e695a104aa70816b51af2797e92d6"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"331257e58c08792a444cd2ce52af2b4148ee3aa2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ChangBo Guo(gcb) \u003ceric.guo@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-03 10:03:29 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba7be1f8_9a14394e","line":7,"updated":"2015-03-03 13:02:09.000000000","message":"Extra space after \"Leverage\".","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"2a8158677d94fc830784f225e4d8936a84b8beff","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ChangBo Guo(gcb) \u003ceric.guo@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-03 10:03:29 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba7be1f8_69050110","line":7,"in_reply_to":"ba7be1f8_9a14394e","updated":"2015-03-03 14:03:26.000000000","message":"will update in next patch.","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"331257e58c08792a444cd2ce52af2b4148ee3aa2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Cinder dropped python 2.6 support in Kilo, we can leverage this now."},{"line_number":17,"context_line":"There is deep dive about PEP-0274[2] and basic tests about"},{"line_number":18,"context_line":"performance[3]."},{"line_number":19,"context_line":"Note: This commit doesn\u0027t handle dict constructor with kwargs."},{"line_number":20,"context_line":"This commit also adds a hacking rule."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[1]http://legacy.python.org/dev/peps/pep-0274/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba7be1f8_5d539b16","line":19,"updated":"2015-03-03 13:02:09.000000000","message":"Add a blank line above?","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"2a8158677d94fc830784f225e4d8936a84b8beff","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Cinder dropped python 2.6 support in Kilo, we can leverage this now."},{"line_number":17,"context_line":"There is deep dive about PEP-0274[2] and basic tests about"},{"line_number":18,"context_line":"performance[3]."},{"line_number":19,"context_line":"Note: This commit doesn\u0027t handle dict constructor with kwargs."},{"line_number":20,"context_line":"This commit also adds a hacking rule."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[1]http://legacy.python.org/dev/peps/pep-0274/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba7be1f8_c9134d5a","line":19,"in_reply_to":"ba7be1f8_5d539b16","updated":"2015-03-03 14:03:26.000000000","message":"will update in next patch.","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"cc9bad84f888dc992778908273e870974a49f568","unresolved":false,"context_lines":[{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"},{"line_number":11,"context_line":"  First, it makes the code look neater."},{"line_number":12,"context_line":"  Second, it gains a micro-optimization."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Cinder dropped python 2.6 support in Kilo, we can leverage this now."},{"line_number":15,"context_line":"Note: This commit doesn\u0027t handle dict constructor with kwargs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a80dd14_64288786","line":12,"updated":"2015-03-16 09:14:17.000000000","message":"It would be awesome if you add a micro-benchmark here to show how much we gain.","commit_id":"ca7897f24171ed46eab15e30922225e8c519df18"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"4c61c9f808b51002baeb74a0d87a96d2fe05fa91","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Rykowski \u003ckamil.rykowski@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-08 14:50:45 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9aa53dc9_83852708","line":7,"updated":"2015-04-09 15:34:14.000000000","message":"Extra space between \u0027leverage\u0027 and \u0027dict\u0027.","commit_id":"b012511612cf9244839165f71a9040cbcfd54793"},{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"3d7e9235d42db82c7b6d78b46952d5366f035c9f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Rykowski \u003ckamil.rykowski@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-08 14:50:45 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"dac4157f_a491b454","line":7,"in_reply_to":"9aa53dc9_83852708","updated":"2015-04-21 08:00:19.000000000","message":"Done","commit_id":"b012511612cf9244839165f71a9040cbcfd54793"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"97bfffb0d16fe03ca6a3d7f2b90cac3659e31b51","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ChangBo Guo(gcb) \u003ceric.guo@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-14 10:12:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a016987_aa9a476c","line":7,"updated":"2015-05-19 07:04:08.000000000","message":"Extra space after \"Leverage\".","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fadee4796c4241a19f223afa96dc5a0e93fe7ad1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ChangBo Guo(gcb) \u003ceric.guo@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-14 10:12:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a016987_b49337a3","line":7,"updated":"2015-05-14 14:59:22.000000000","message":"Get rid of double space if you do another update.","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"233dede2285ffaa43b96fa8382935779d611a820","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ChangBo Guo(gcb) \u003ceric.guo@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-14 10:12:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Leverage  dict comprehension in PEP-0274"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PEP-0274 introduced dict comprehensions to replace dict constructor"},{"line_number":10,"context_line":"with a sqeuence of key-pairs[1], these are benefits:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a016987_0ff7e259","line":7,"in_reply_to":"7a016987_aa9a476c","updated":"2015-05-22 02:04:15.000000000","message":"Done","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"}],"HACKING.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"557233354482a3015a0d8ffe2bfbed2f5db831fe","unresolved":false,"context_lines":[{"line_number":24,"context_line":"- [C304] Enforce no use of LOG.audit messages.  LOG.info should be used instead."},{"line_number":25,"context_line":"- [C305] Prevent use of deprecated contextlib.nested."},{"line_number":26,"context_line":"- [C306] timeutils.strtime() must not be used (deprecated)."},{"line_number":27,"context_line":"- [C307] LOG.warn is deprecated. Enforce use of LOG.warning."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"General"},{"line_number":30,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7a016987_49aa2f72","line":27,"updated":"2015-05-14 13:55:31.000000000","message":"Commit Id2e6cba489d8509601820b5aed83652f71be2bdc used C307, but missed updating HACKING.rst. Sorry, I\u0027ll submit a patch to correct that now.","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15f71f68d6beb4f014750b68464cddc4312288f7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"- [C304] Enforce no use of LOG.audit messages.  LOG.info should be used instead."},{"line_number":25,"context_line":"- [C305] Prevent use of deprecated contextlib.nested."},{"line_number":26,"context_line":"- [C306] timeutils.strtime() must not be used (deprecated)."},{"line_number":27,"context_line":"- [C307] LOG.warn is deprecated. Enforce use of LOG.warning."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"General"},{"line_number":30,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7a016987_e959db8f","line":27,"in_reply_to":"7a016987_49aa2f72","updated":"2015-05-14 13:58:09.000000000","message":"Nevermind. Confusing myself by looking at inter-patch diffs and not drinking enough coffee yet.","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"}],"cinder/api/contrib/quotas.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8306354bd0dc388d08dd67507d0629a8d89c5d2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if usages:"},{"line_number":77,"context_line":"            return values"},{"line_number":78,"context_line":"        else:"},{"line_number":79,"context_line":"            return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":82,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_d3dfd136","line":79,"updated":"2015-01-13 15:30:30.000000000","message":"values.items() performs a copy on py2.7, how does this compare to iteritems?","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"50faf0540a97c1b4e4612069fb83ba06e05a4049","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if usages:"},{"line_number":77,"context_line":"            return values"},{"line_number":78,"context_line":"        else:"},{"line_number":79,"context_line":"            return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":82,"context_line":"    def show(self, req, id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_5feb7677","line":79,"in_reply_to":"3a961159_d3dfd136","updated":"2015-01-27 03:18:24.000000000","message":"Not sure cinder will  have plan to support Python 3  or not ,beyond performance , iteritems() was removed from Python 3,  current code works on Python 2.7 and Python 3.\n\nIt would be better  that another commit handles similar case","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"}],"cinder/api/v1/limits.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"caa54ff07086fd35cff1f6ba1cc13fab08363b70","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":85,"context_line":"        quotas \u003d QUOTAS.get_project_quotas(context, context.project_id,"},{"line_number":86,"context_line":"                                           usages\u003dFalse)"},{"line_number":87,"context_line":"        abs_limits \u003d {k: v[\u0027limit\u0027] for k, v in quotas.items()}"},{"line_number":88,"context_line":"        rate_limits \u003d req.environ.get(\"cinder.limits\", [])"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        builder \u003d self._get_view_builder(req)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_9e9a91c4","line":87,"updated":"2015-05-26 17:09:28.000000000","message":"I\u0027ve always found this reversal to cause a double-take for me.  Probably warrants a comment if for some reason there\u0027s another turn on this patch.","commit_id":"5800f25f7e615b40fdaa6e0be8096d8fab1b5566"}],"cinder/hacking/checks.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8306354bd0dc388d08dd67507d0629a8d89c5d2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            yield (pos, msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"def dict_constructor_with_list_copy(logical_line):"},{"line_number":129,"context_line":"    msg \u003d (\"N334: Must use a dict comprehension instead of a dict constructor\""},{"line_number":130,"context_line":"           \" with a sequence of key-value pairs.\""},{"line_number":131,"context_line":"           )"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_739d3d0a","line":128,"updated":"2015-01-13 15:30:30.000000000","message":"About the hacking test name -- is \"list copy\" the problem?  The linked article indicates that it may be a \"dict copy\" causing much of the difference instead AFAICT.","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"50faf0540a97c1b4e4612069fb83ba06e05a4049","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            yield (pos, msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"def dict_constructor_with_list_copy(logical_line):"},{"line_number":129,"context_line":"    msg \u003d (\"N334: Must use a dict comprehension instead of a dict constructor\""},{"line_number":130,"context_line":"           \" with a sequence of key-value pairs.\""},{"line_number":131,"context_line":"           )"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_5f3e16db","line":128,"in_reply_to":"3a961159_739d3d0a","updated":"2015-01-27 03:18:24.000000000","message":"yes, not about the list copy,   we merged the hacking rule in Nova https://review.openstack.org/#/c/143807/\n\nShould we keep it same with Nova ?","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"331257e58c08792a444cd2ce52af2b4148ee3aa2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"# We need this for cases where they have created their own _ function."},{"line_number":42,"context_line":"custom_underscore_check \u003d re.compile(r\"(.)*_\\s*\u003d\\s*(.)*\")"},{"line_number":43,"context_line":"no_audit_log \u003d re.compile(r\"(.)*LOG\\.audit(.)*\")"},{"line_number":44,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# NOTE(jsbryant): When other oslo libraries switch over non-namespaced"},{"line_number":47,"context_line":"# imports, we will need to add them to the regex below."}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_c8418b3a","line":44,"updated":"2015-03-03 13:02:09.000000000","message":"Can it find multiline dict constructor?","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"2a8158677d94fc830784f225e4d8936a84b8beff","unresolved":false,"context_lines":[{"line_number":41,"context_line":"# We need this for cases where they have created their own _ function."},{"line_number":42,"context_line":"custom_underscore_check \u003d re.compile(r\"(.)*_\\s*\u003d\\s*(.)*\")"},{"line_number":43,"context_line":"no_audit_log \u003d re.compile(r\"(.)*LOG\\.audit(.)*\")"},{"line_number":44,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# NOTE(jsbryant): When other oslo libraries switch over non-namespaced"},{"line_number":47,"context_line":"# imports, we will need to add them to the regex below."}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_ee09f731","line":44,"in_reply_to":"ba7be1f8_c8418b3a","updated":"2015-03-03 14:03:26.000000000","message":"yes, it handles logical_line see line 142","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"d48221c27dbeb35600b85f158f8bcd79f552e3f6","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"def dict_constructor_with_list_copy(logical_line):"},{"line_number":308,"context_line":"    msg \u003d (\"N336: Must use a dict comprehension instead of a dict constructor\""},{"line_number":309,"context_line":"           \" with a sequence of key-value pairs.\""},{"line_number":310,"context_line":"           )"},{"line_number":311,"context_line":"    if dict_constructor_with_list_copy_re.match(logical_line):"},{"line_number":312,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a016987_5fb082f4","line":309,"updated":"2015-05-15 07:39:08.000000000","message":"According to the standards we should add the space at the end of a line and not at the beginning.\nhttp://docs.openstack.org/developer/oslo.config/styleguide.html#format","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"233dede2285ffaa43b96fa8382935779d611a820","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"def dict_constructor_with_list_copy(logical_line):"},{"line_number":308,"context_line":"    msg \u003d (\"N336: Must use a dict comprehension instead of a dict constructor\""},{"line_number":309,"context_line":"           \" with a sequence of key-value pairs.\""},{"line_number":310,"context_line":"           )"},{"line_number":311,"context_line":"    if dict_constructor_with_list_copy_re.match(logical_line):"},{"line_number":312,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a016987_af9e8e04","line":309,"in_reply_to":"7a016987_2ab3f7ea","updated":"2015-05-22 02:04:15.000000000","message":"Done","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"97bfffb0d16fe03ca6a3d7f2b90cac3659e31b51","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"def dict_constructor_with_list_copy(logical_line):"},{"line_number":308,"context_line":"    msg \u003d (\"N336: Must use a dict comprehension instead of a dict constructor\""},{"line_number":309,"context_line":"           \" with a sequence of key-value pairs.\""},{"line_number":310,"context_line":"           )"},{"line_number":311,"context_line":"    if dict_constructor_with_list_copy_re.match(logical_line):"},{"line_number":312,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a016987_2ab3f7ea","line":309,"in_reply_to":"7a016987_5fb082f4","updated":"2015-05-19 07:04:08.000000000","message":"Agreed. Also how about move the bracket to the end of the line?","commit_id":"79247b2e53f864cbee0ef4987d14a30ed3e9ac53"}],"cinder/volume/api.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"331257e58c08792a444cd2ce52af2b4148ee3aa2","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"                    properties \u003d {custom_property:"},{"line_number":1007,"context_line":"                                  volume_image_metadata[custom_property]"},{"line_number":1008,"context_line":"                                  for custom_property in custom_property_set}"},{"line_number":1009,"context_line":"                    metadata.update(dict(properties\u003dproperties))"},{"line_number":1010,"context_line":"            except exception.GlanceMetadataNotFound:"},{"line_number":1011,"context_line":"                # If volume is not created from image, No glance metadata"},{"line_number":1012,"context_line":"                # would be available for that volume in"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_1d7be3be","line":1009,"updated":"2015-03-03 13:02:09.000000000","message":"Why not use \u0027{}\u0027 instead of \u0027dict\u0027 here? http://doughellmann.com/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpython-2-7-2.html says dict constructor is generally slower than {}.","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"2a8158677d94fc830784f225e4d8936a84b8beff","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"                    properties \u003d {custom_property:"},{"line_number":1007,"context_line":"                                  volume_image_metadata[custom_property]"},{"line_number":1008,"context_line":"                                  for custom_property in custom_property_set}"},{"line_number":1009,"context_line":"                    metadata.update(dict(properties\u003dproperties))"},{"line_number":1010,"context_line":"            except exception.GlanceMetadataNotFound:"},{"line_number":1011,"context_line":"                # If volume is not created from image, No glance metadata"},{"line_number":1012,"context_line":"                # would be available for that volume in"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_6988a171","line":1009,"in_reply_to":"ba7be1f8_1d7be3be","updated":"2015-03-03 14:03:26.000000000","message":"this change focus on  dict constructor\nwith a sqeuence of key-pairs. See my note in commit message:\n\nNote: This commit doesn\u0027t handle dict constructor with kwargs.","commit_id":"70a572ead75c6b506e178e820e96ef351d60153d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8dd6bcceae7dc9ad1128fbcf5981b5204d2c122a","unresolved":false,"context_lines":[{"line_number":1142,"context_line":"                    properties \u003d {custom_property:"},{"line_number":1143,"context_line":"                                  volume_image_metadata[custom_property]"},{"line_number":1144,"context_line":"                                  for custom_property in custom_property_set}"},{"line_number":1145,"context_line":"                    metadata.update(dict(properties\u003dproperties))"},{"line_number":1146,"context_line":"            except exception.GlanceMetadataNotFound:"},{"line_number":1147,"context_line":"                # If volume is not created from image, No glance metadata"},{"line_number":1148,"context_line":"                # would be available for that volume in"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_d90263b4","line":1145,"updated":"2015-05-26 17:37:59.000000000","message":"Why do we prefer using dict instead of `{\u0027properties\u0027: properties}`?","commit_id":"5800f25f7e615b40fdaa6e0be8096d8fab1b5566"}],"cinder/volume/drivers/ibm/flashsystem.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d8306354bd0dc388d08dd67507d0629a8d89c5d2","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            (_(\u0027_get_hdr_dic: attribute headers and values do not match.\\n \u0027"},{"line_number":459,"context_line":"               \u0027Headers: %(header)s\\n Values: %(row)s.\u0027)"},{"line_number":460,"context_line":"             % {\u0027header\u0027: six.text_type(header), \u0027row\u0027: six.text_type(row)}))"},{"line_number":461,"context_line":"        dic \u003d {a: v for a, v in map(None, attributes, values)}"},{"line_number":462,"context_line":"        return dic"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def _get_conn_fc_wwpns(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_b3c7a545","line":461,"updated":"2015-01-13 15:30:30.000000000","message":"Is map(None the best way to do this?  Looks like zip() or similar...","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"50faf0540a97c1b4e4612069fb83ba06e05a4049","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            (_(\u0027_get_hdr_dic: attribute headers and values do not match.\\n \u0027"},{"line_number":459,"context_line":"               \u0027Headers: %(header)s\\n Values: %(row)s.\u0027)"},{"line_number":460,"context_line":"             % {\u0027header\u0027: six.text_type(header), \u0027row\u0027: six.text_type(row)}))"},{"line_number":461,"context_line":"        dic \u003d {a: v for a, v in map(None, attributes, values)}"},{"line_number":462,"context_line":"        return dic"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def _get_conn_fc_wwpns(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_12a8058c","line":461,"in_reply_to":"3a961159_b3c7a545","updated":"2015-01-27 03:18:24.000000000","message":"yes , zip is enough :-)\n\nanother commit maybe can handle this","commit_id":"71dd59954ffedc1bc50f54bf154eb1cfe681408d"}]}
