)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7f344213da79d53bd067ff01212b89c69970fa5f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-23 01:54:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make the mutable default arg check very strict."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I12e09f53cd00139549354906f3f4c08f689ff3e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_479b6dc9","line":7,"updated":"2014-12-07 23:47:34.000000000","message":"how strict? What wasn\u0027t working before?","commit_id":"fbd2c7e9973c3315242828d8b4b57c1891b75fda"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9678504073816d6a1f488a6d1ae83805dfdd2e95","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-23 01:54:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make the mutable default arg check very strict."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I12e09f53cd00139549354906f3f4c08f689ff3e2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_baa08af5","line":7,"in_reply_to":"3a961159_479b6dc9","updated":"2014-12-08 19:19:34.000000000","message":"I added a little better description","commit_id":"fbd2c7e9973c3315242828d8b4b57c1891b75fda"}],"keystone/hacking/checks.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"424a169b9d35012ac5b0e5a2b9c26dccf01fa9e1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    CHECK_DESC \u003d \u0027K001 Using mutable as a function/method default\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dstanek): once we drop support for Python 2.6 we can add ast.Set,"},{"line_number":80,"context_line":"    # ast.DictComp and ast.SetComp to MUTABLES. Don\u0027t forget the tests!"},{"line_number":81,"context_line":"    MUTABLES \u003d (ast.List, ast.ListComp, ast.Dict, ast.Call)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def visit_FunctionDef(self, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_8941fa0b","line":80,"updated":"2014-12-04 23:26:35.000000000","message":"we\u0027ve dropped support for python 2.6, so might as well take care of it.","commit_id":"fbd2c7e9973c3315242828d8b4b57c1891b75fda"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2bf900e21ceddd994e89bfce23ac45cc2c34d58d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    CHECK_DESC \u003d \u0027K001 Using mutable as a function/method default\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dstanek): once we drop support for Python 2.6 we can add ast.Set,"},{"line_number":80,"context_line":"    # ast.DictComp and ast.SetComp to MUTABLES. Don\u0027t forget the tests!"},{"line_number":81,"context_line":"    MUTABLES \u003d (ast.List, ast.ListComp, ast.Dict, ast.Call)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def visit_FunctionDef(self, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_390a7479","line":80,"updated":"2014-11-24 08:03:40.000000000","message":"what was the problem with Py26 here? Lack of ast module? I thought it was there, at least in Python 2.6.6","commit_id":"fbd2c7e9973c3315242828d8b4b57c1891b75fda"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"36f862c28b7b81d202587f17a6b1d86629b9917d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    CHECK_DESC \u003d \u0027K001 Using mutable as a function/method default\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dstanek): once we drop support for Python 2.6 we can add ast.Set,"},{"line_number":80,"context_line":"    # ast.DictComp and ast.SetComp to MUTABLES. Don\u0027t forget the tests!"},{"line_number":81,"context_line":"    MUTABLES \u003d (ast.List, ast.ListComp, ast.Dict, ast.Call)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def visit_FunctionDef(self, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_521aa86f","line":80,"in_reply_to":"5a890539_390a7479","updated":"2014-11-24 16:54:26.000000000","message":"Python 2.6 does have set literals or set/dict comprehensions. So it\u0027s ast module doesn\u0027t know anything about them.","commit_id":"fbd2c7e9973c3315242828d8b4b57c1891b75fda"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9678504073816d6a1f488a6d1ae83805dfdd2e95","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    CHECK_DESC \u003d \u0027K001 Using mutable as a function/method default\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dstanek): once we drop support for Python 2.6 we can add ast.Set,"},{"line_number":80,"context_line":"    # ast.DictComp and ast.SetComp to MUTABLES. Don\u0027t forget the tests!"},{"line_number":81,"context_line":"    MUTABLES \u003d (ast.List, ast.ListComp, ast.Dict, ast.Call)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def visit_FunctionDef(self, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_ba87aa60","line":80,"in_reply_to":"5a890539_8941fa0b","updated":"2014-12-08 19:19:34.000000000","message":"They are removed a little later in one of the commits.","commit_id":"fbd2c7e9973c3315242828d8b4b57c1891b75fda"}]}
