)]}'
{"tempest/api/volume/admin/test_volume_types_extra_specs_negative.py":[{"author":{"_account_id":12024,"name":"Tong Liu","email":"tongl@vmware.com","username":"tong101"},"change_message_id":"6d14a95340367f198f3a83fa180eed18d1da950d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertRaises("},{"line_number":71,"context_line":"            lib_exc.BadRequest,"},{"line_number":72,"context_line":"            self.volume_types_client.update_volume_type_extra_specs,"},{"line_number":73,"context_line":"            self.volume_type[\u0027id\u0027], list(extra_spec.keys())[0],"},{"line_number":74,"context_line":"            extra_spec)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @test.idempotent_id(\u002749d5472c-a53d-4eab-a4d3-450c4db1c545\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_ad17a343","line":73,"updated":"2016-04-27 16:30:30.000000000","message":"I think in python3, this is the same as\n\n list(extra_spec)\n\nIterating over the dictionary directly also yields keys, so turning a dictionary into a list results in a list of all the keys.","commit_id":"bc12411a006002b0cdbe560f3dac27c81c38c7f1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"18a85b8026afcb3712d7b1795364867c94ff257e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertRaises("},{"line_number":71,"context_line":"            lib_exc.BadRequest,"},{"line_number":72,"context_line":"            self.volume_types_client.update_volume_type_extra_specs,"},{"line_number":73,"context_line":"            self.volume_type[\u0027id\u0027], list(extra_spec.keys())[0],"},{"line_number":74,"context_line":"            extra_spec)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @test.idempotent_id(\u002749d5472c-a53d-4eab-a4d3-450c4db1c545\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_5af3bf9f","line":73,"in_reply_to":"1a122d0e_ad17a343","updated":"2016-05-02 08:45:49.000000000","message":"You are right. lemme fix this.","commit_id":"bc12411a006002b0cdbe560f3dac27c81c38c7f1"}],"tempest/hacking/checks.py":[{"author":{"_account_id":12024,"name":"Tong Liu","email":"tongl@vmware.com","username":"tong101"},"change_message_id":"a04a9f3ce6553191901eeed2a3ec5d63b4b6d8c8","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    T114"},{"line_number":268,"context_line":"    \"\"\""},{"line_number":269,"context_line":"    check_regex \u003d re.compile(r\u0027\\.(?:keys|values|items)\\(\\)\\[0\\]\u0027)"},{"line_number":270,"context_line":"    msg \u003d (\"T114: In Py3 \u0027dict_values\u0027, \u0027dict_keys\u0027 and \u0027dict_items\u0027 objects \""},{"line_number":271,"context_line":"           \"don\u0027t support indexing.\")"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_526a0382","line":269,"updated":"2016-04-26 21:05:45.000000000","message":"Can you check integer index instead of only 0?","commit_id":"bc12411a006002b0cdbe560f3dac27c81c38c7f1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"18a85b8026afcb3712d7b1795364867c94ff257e","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    T114"},{"line_number":268,"context_line":"    \"\"\""},{"line_number":269,"context_line":"    check_regex \u003d re.compile(r\u0027\\.(?:keys|values|items)\\(\\)\\[0\\]\u0027)"},{"line_number":270,"context_line":"    msg \u003d (\"T114: In Py3 \u0027dict_values\u0027, \u0027dict_keys\u0027 and \u0027dict_items\u0027 objects \""},{"line_number":271,"context_line":"           \"don\u0027t support indexing.\")"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_7a3ddb2b","line":269,"in_reply_to":"1a122d0e_526a0382","updated":"2016-05-02 08:45:49.000000000","message":"Well in Python, dict are unordored by default so doing something like dict.keys()[1] would be madness, you would get random results.","commit_id":"bc12411a006002b0cdbe560f3dac27c81c38c7f1"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7e5c354098dc351b121bf28c06331f7c74e2b36b","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    yield (0, msg)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"def py3_dict_dont_support_indexing_keys_values_or_items(logical_line):"},{"line_number":261,"context_line":"    \"\"\"In Python3 some `dict` methods don\u0027t return a list"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    In Py3 \u0027dict_values\u0027, \u0027dict_keys\u0027 and \u0027dict_items\u0027 objects don\u0027t"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_579b0418","line":260,"updated":"2016-06-01 09:15:23.000000000","message":"I am not really convinced we would like to have these weak checks.\n1. It does not able to detect all of this kind of issue\n2. It can have false positives","commit_id":"c807f496a5a10050ba74add9a5d455b68b14923f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"518d2a1d566f7d4b90e95b678faf54746e67e15a","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    yield (0, msg)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"def py3_dict_dont_support_indexing_keys_values_or_items(logical_line):"},{"line_number":261,"context_line":"    \"\"\"In Python3 some `dict` methods don\u0027t return a list"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    In Py3 \u0027dict_values\u0027, \u0027dict_keys\u0027 and \u0027dict_items\u0027 objects don\u0027t"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_4676b43e","line":260,"in_reply_to":"9abb7d3a_579b0418","updated":"2016-06-01 10:37:18.000000000","message":"Any example for 1. ?\n\nFor 2., sure theoretically. But 0 false positive in the X000 LoC of Tempest, so the risk is low. The alternative is to not have a hacking rule for this, but I think it\u0027s worse because this kind of constructs will come back.","commit_id":"c807f496a5a10050ba74add9a5d455b68b14923f"}]}
