)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"22b94951c16649d9d83d74d35522b49b32f9fe89","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add utility of boolean value parser"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We parse the boolean value from string with identity logic in"},{"line_number":10,"context_line":"different areas, it\u0027s reasonable to add an util function to"},{"line_number":11,"context_line":"cover this."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a8bc5a2_f54f578f","line":9,"range":{"start_line":9,"start_character":32,"end_line":9,"end_character":38},"updated":"2016-09-27 11:49:00.000000000","message":"The logic is extracting boolean value from a dict member, not string.","commit_id":"98d2e374c8eae9a2e2a05799c656e075fbe1c526"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"22b94951c16649d9d83d74d35522b49b32f9fe89","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add utility of boolean value parser"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We parse the boolean value from string with identity logic in"},{"line_number":10,"context_line":"different areas, it\u0027s reasonable to add an util function to"},{"line_number":11,"context_line":"cover this."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a8bc5a2_156cc306","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":52},"updated":"2016-09-27 11:49:00.000000000","message":"identical","commit_id":"98d2e374c8eae9a2e2a05799c656e075fbe1c526"}],"manila/tests/test_utils.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"ec515155acdf512e079212a4d3141be48b4cecb2","unresolved":false,"context_lines":[{"line_number":648,"context_line":"        self.assertRaises(exc.HTTPBadRequest,"},{"line_number":649,"context_line":"                          utils.get_bool_from_params,"},{"line_number":650,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"@ddt.ddt"},{"line_number":654,"context_line":"class IsValidIPVersion(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_20605b35","line":651,"updated":"2016-09-29 03:40:19.000000000","message":"please add the tests for the circumstances that key not exist in dict.","commit_id":"9f30c0580218b40991fd509d88db17983f895d43"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"707222f97c621d0bba1e16c708c97329b778708d","unresolved":false,"context_lines":[{"line_number":648,"context_line":"        self.assertRaises(exc.HTTPBadRequest,"},{"line_number":649,"context_line":"                          utils.get_bool_from_params,"},{"line_number":650,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"@ddt.ddt"},{"line_number":654,"context_line":"class IsValidIPVersion(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_efea44da","line":651,"in_reply_to":"1a95cdbc_cc6f56fa","updated":"2016-10-09 01:56:03.000000000","message":"I meant the circumstance that the \u0027key\u0027 parameter passed to get_bool_from_params is not in \u0027params\u0027 dict.\nFor instance,\nget_bool_from_params(\u0027fake_key\u0027, {\u0027abc\u0027:123})","commit_id":"9f30c0580218b40991fd509d88db17983f895d43"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9cbe3c45269ab4dc17ee17dbd41051df3f454dde","unresolved":false,"context_lines":[{"line_number":648,"context_line":"        self.assertRaises(exc.HTTPBadRequest,"},{"line_number":649,"context_line":"                          utils.get_bool_from_params,"},{"line_number":650,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"@ddt.ddt"},{"line_number":654,"context_line":"class IsValidIPVersion(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_cc6f56fa","line":651,"in_reply_to":"3a98d1f4_20605b35","updated":"2016-10-09 00:57:46.000000000","message":"sorry, I don\u0027t get your words \u0027that key not exist in dict\u0027, is that the things I wanna cover with the testcase \u0027test_bool_with_invalid_string\u0027","commit_id":"9f30c0580218b40991fd509d88db17983f895d43"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"39eb27b20e8fbf739e0719133f1035d4adcce848","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        invalid_default \u003d utils.get_bool_from_api_params(\u0027fake_key2\u0027,"},{"line_number":632,"context_line":"                                                         fake_dict,"},{"line_number":633,"context_line":"                                                         def_val,"},{"line_number":634,"context_line":"                                                         False)"},{"line_number":635,"context_line":"        self.assertEqual(expected, invalid_default)"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_59ca916f","line":634,"range":{"start_line":634,"start_character":57,"end_line":634,"end_character":62},"updated":"2016-10-12 12:29:05.000000000","message":"You are always overriding the value of \u0027strict\u0027 with False, so you don\u0027t test the case where an invalid default is supplied but strict is left to its default value True.","commit_id":"b4ccbc72837a418c3d1224e05410f65077249019"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"b5fc3055924c388774a58fc807f60db28e18d64d","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                          utils.get_bool_from_api_params,"},{"line_number":621,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    @ddt.data((False, False, False, False),"},{"line_number":624,"context_line":"              (True, False, False, True),"},{"line_number":625,"context_line":"              (\u0027true\u0027, False, False, True),"},{"line_number":626,"context_line":"              (\u0027false\u0027, False, False, False),"},{"line_number":627,"context_line":"              (\u0027undefined\u0027, False, False, \u0027undefined\u0027),"},{"line_number":628,"context_line":"              (\u0027undefined\u0027, True, True, None),"},{"line_number":629,"context_line":"              (None, True, True, None),"},{"line_number":630,"context_line":"              (False, True, False, False),"},{"line_number":631,"context_line":"              (\u0027true\u0027, True, False, True),)"},{"line_number":632,"context_line":"    @ddt.unpack"},{"line_number":633,"context_line":"    def test_bool_with_key_not_found(self, def_val, strict,"},{"line_number":634,"context_line":"                                     raise_error, expected):"},{"line_number":635,"context_line":"        fake_dict \u003d {\u0027fake_key1\u0027: \u0027value1\u0027}"},{"line_number":636,"context_line":"        if raise_error:"},{"line_number":637,"context_line":"            self.assertRaises(exc.HTTPBadRequest,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_ac21824f","line":634,"range":{"start_line":623,"start_character":0,"end_line":634,"end_character":60},"updated":"2016-10-13 07:21:47.000000000","message":"Why not split this test to two, one for exception raised, and the other for normal situation, it\u0027ll make the code more clear.","commit_id":"51bb588e53ef8419ed085eae03e5c307ac312fbf"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e1c33c1d3fae0ce652aac9a115505898ffb861da","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                          utils.get_bool_from_api_params,"},{"line_number":621,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    @ddt.data((False, False, False, False),"},{"line_number":624,"context_line":"              (True, False, False, True),"},{"line_number":625,"context_line":"              (\u0027true\u0027, False, False, True),"},{"line_number":626,"context_line":"              (\u0027false\u0027, False, False, False),"},{"line_number":627,"context_line":"              (\u0027undefined\u0027, False, False, \u0027undefined\u0027),"},{"line_number":628,"context_line":"              (\u0027undefined\u0027, True, True, None),"},{"line_number":629,"context_line":"              (None, True, True, None),"},{"line_number":630,"context_line":"              (False, True, False, False),"},{"line_number":631,"context_line":"              (\u0027true\u0027, True, False, True),)"},{"line_number":632,"context_line":"    @ddt.unpack"},{"line_number":633,"context_line":"    def test_bool_with_key_not_found(self, def_val, strict,"},{"line_number":634,"context_line":"                                     raise_error, expected):"},{"line_number":635,"context_line":"        fake_dict \u003d {\u0027fake_key1\u0027: \u0027value1\u0027}"},{"line_number":636,"context_line":"        if raise_error:"},{"line_number":637,"context_line":"            self.assertRaises(exc.HTTPBadRequest,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_f6fe2004","line":634,"range":{"start_line":623,"start_character":0,"end_line":634,"end_character":60},"in_reply_to":"fa6399be_1611edaf","updated":"2016-10-18 21:54:49.000000000","message":"+1","commit_id":"51bb588e53ef8419ed085eae03e5c307ac312fbf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ef3f0b8e9b58f8942c7f5aa1803b7e5d88300c85","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                          utils.get_bool_from_api_params,"},{"line_number":621,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    @ddt.data((False, False, False, False),"},{"line_number":624,"context_line":"              (True, False, False, True),"},{"line_number":625,"context_line":"              (\u0027true\u0027, False, False, True),"},{"line_number":626,"context_line":"              (\u0027false\u0027, False, False, False),"},{"line_number":627,"context_line":"              (\u0027undefined\u0027, False, False, \u0027undefined\u0027),"},{"line_number":628,"context_line":"              (\u0027undefined\u0027, True, True, None),"},{"line_number":629,"context_line":"              (None, True, True, None),"},{"line_number":630,"context_line":"              (False, True, False, False),"},{"line_number":631,"context_line":"              (\u0027true\u0027, True, False, True),)"},{"line_number":632,"context_line":"    @ddt.unpack"},{"line_number":633,"context_line":"    def test_bool_with_key_not_found(self, def_val, strict,"},{"line_number":634,"context_line":"                                     raise_error, expected):"},{"line_number":635,"context_line":"        fake_dict \u003d {\u0027fake_key1\u0027: \u0027value1\u0027}"},{"line_number":636,"context_line":"        if raise_error:"},{"line_number":637,"context_line":"            self.assertRaises(exc.HTTPBadRequest,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_1611edaf","line":634,"range":{"start_line":623,"start_character":0,"end_line":634,"end_character":60},"in_reply_to":"fa6399be_ac21824f","updated":"2016-10-18 13:55:41.000000000","message":"+1","commit_id":"51bb588e53ef8419ed085eae03e5c307ac312fbf"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"1bd1d25c0acb3849e05fdc0abe822a3f08f5224e","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                          utils.get_bool_from_api_params,"},{"line_number":621,"context_line":"                          \u0027fake_key\u0027, fake_dict)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    @ddt.data((\u0027undefined\u0027, True, None),"},{"line_number":624,"context_line":"              (None, True, None),"},{"line_number":625,"context_line":"              (False, False, False),"},{"line_number":626,"context_line":"              (\u0027true\u0027, False, True), )"},{"line_number":627,"context_line":"    @ddt.unpack"},{"line_number":628,"context_line":"    def test_bool_with_key_not_found_with_strict(self, def_val,"},{"line_number":629,"context_line":"                                                 raise_error, expected):"},{"line_number":630,"context_line":"        fake_dict \u003d {\u0027fake_key1\u0027: \u0027value1\u0027}"},{"line_number":631,"context_line":"        if raise_error:"},{"line_number":632,"context_line":"            self.assertRaises(exc.HTTPBadRequest,"},{"line_number":633,"context_line":"                              utils.get_bool_from_api_params,"},{"line_number":634,"context_line":"                              \u0027fake_key2\u0027,"},{"line_number":635,"context_line":"                              fake_dict,"},{"line_number":636,"context_line":"                              def_val,"},{"line_number":637,"context_line":"                              True)"},{"line_number":638,"context_line":"        else:"},{"line_number":639,"context_line":"            invalid_default \u003d utils.get_bool_from_api_params(\u0027fake_key2\u0027,"},{"line_number":640,"context_line":"                                                             fake_dict,"},{"line_number":641,"context_line":"                                                             def_val,"},{"line_number":642,"context_line":"                                                             True)"},{"line_number":643,"context_line":"            self.assertEqual(expected, invalid_default)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    @ddt.data((False, False),"},{"line_number":646,"context_line":"              (True, True),"},{"line_number":647,"context_line":"              (\u0027true\u0027, True),"},{"line_number":648,"context_line":"              (\u0027false\u0027, False),"},{"line_number":649,"context_line":"              (\u0027undefined\u0027, \u0027undefined\u0027))"},{"line_number":650,"context_line":"    @ddt.unpack"},{"line_number":651,"context_line":"    def test_bool_with_key_not_found_without_strict(self, def_val, expected):"},{"line_number":652,"context_line":"        fake_dict \u003d {\u0027fake_key1\u0027: \u0027value1\u0027}"},{"line_number":653,"context_line":"        invalid_default \u003d utils.get_bool_from_api_params(\u0027fake_key2\u0027,"},{"line_number":654,"context_line":"                                                         fake_dict,"},{"line_number":655,"context_line":"                                                         def_val,"},{"line_number":656,"context_line":"                                                         False)"},{"line_number":657,"context_line":"        self.assertEqual(expected, invalid_default)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_61bf8ffc","line":657,"range":{"start_line":623,"start_character":4,"end_line":657,"end_character":51},"updated":"2016-10-19 12:05:19.000000000","message":"The point was in avoiding conditions in test. You should have split it by \"raises exception\" and \"not raises exception\".","commit_id":"bc89be612bc0d6ffe48976219376003d3b05b871"}],"manila/utils.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"fe2832cffc713dd0b32844e725785c7c18d2784d","unresolved":false,"context_lines":[{"line_number":609,"context_line":"    return _decorator"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"def get_bool_param(param_string, params, default\u003dFalse):"},{"line_number":613,"context_line":"    param \u003d params.get(param_string, default)"},{"line_number":614,"context_line":"    try:"},{"line_number":615,"context_line":"        param \u003d strutils.bool_from_string(params, strict\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_126787b7","line":612,"range":{"start_line":612,"start_character":4,"end_line":612,"end_character":56},"updated":"2016-09-27 07:55:55.000000000","message":"It is very confusing interface, at least for me. I got know what should be provided here only after looking at place of usage.\nThen, \"strict\" part from line 615 should be able to be changed via interface.\nThen, why do you need to make interface exactly expecting dict and its key? It would be much easier to just expect value that should be translated to bool like following:\n\n\"\"\"\nget_bool_from_string(value, strict\u003dTrue):\n    ...\n\n\"\"\"","commit_id":"98d2e374c8eae9a2e2a05799c656e075fbe1c526"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"fe2832cffc713dd0b32844e725785c7c18d2784d","unresolved":false,"context_lines":[{"line_number":609,"context_line":"    return _decorator"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"def get_bool_param(param_string, params, default\u003dFalse):"},{"line_number":613,"context_line":"    param \u003d params.get(param_string, default)"},{"line_number":614,"context_line":"    try:"},{"line_number":615,"context_line":"        param \u003d strutils.bool_from_string(params, strict\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_d200bf36","line":612,"range":{"start_line":612,"start_character":0,"end_line":612,"end_character":56},"updated":"2016-09-27 07:55:55.000000000","message":"Such new func should have been covered with unit tests.","commit_id":"98d2e374c8eae9a2e2a05799c656e075fbe1c526"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"fe2832cffc713dd0b32844e725785c7c18d2784d","unresolved":false,"context_lines":[{"line_number":612,"context_line":"def get_bool_param(param_string, params, default\u003dFalse):"},{"line_number":613,"context_line":"    param \u003d params.get(param_string, default)"},{"line_number":614,"context_line":"    try:"},{"line_number":615,"context_line":"        param \u003d strutils.bool_from_string(params, strict\u003dTrue)"},{"line_number":616,"context_line":"    except ValueError:"},{"line_number":617,"context_line":"        msg \u003d _(\u0027Invalid value %(param)s for %(param_string)s.\u0027"},{"line_number":618,"context_line":"                \u0027Expecting a boolean.\u0027) % {\u0027param\u0027: param,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_92d397d4","line":615,"range":{"start_line":615,"start_character":42,"end_line":615,"end_character":48},"updated":"2016-09-27 07:55:55.000000000","message":"You provide here dict. This func should not work at all now.","commit_id":"98d2e374c8eae9a2e2a05799c656e075fbe1c526"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"22b94951c16649d9d83d74d35522b49b32f9fe89","unresolved":false,"context_lines":[{"line_number":614,"context_line":"    try:"},{"line_number":615,"context_line":"        param \u003d strutils.bool_from_string(params, strict\u003dTrue)"},{"line_number":616,"context_line":"    except ValueError:"},{"line_number":617,"context_line":"        msg \u003d _(\u0027Invalid value %(param)s for %(param_string)s.\u0027"},{"line_number":618,"context_line":"                \u0027Expecting a boolean.\u0027) % {\u0027param\u0027: param,"},{"line_number":619,"context_line":"                                           \u0027param_string\u0027: param_string}"},{"line_number":620,"context_line":"        raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_d5a33bb0","line":617,"range":{"start_line":617,"start_character":61,"end_line":617,"end_character":62},"updated":"2016-09-27 11:49:00.000000000","message":"add a tail space","commit_id":"98d2e374c8eae9a2e2a05799c656e075fbe1c526"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"ec515155acdf512e079212a4d3141be48b4cecb2","unresolved":false,"context_lines":[{"line_number":612,"context_line":"def get_bool_from_params(key, params, default\u003dFalse, strict\u003dTrue):"},{"line_number":613,"context_line":"    param \u003d params.get(key, default)"},{"line_number":614,"context_line":"    try:"},{"line_number":615,"context_line":"        param \u003d strutils.bool_from_string(param, strict\u003dstrict)"},{"line_number":616,"context_line":"    except ValueError:"},{"line_number":617,"context_line":"        msg \u003d _(\u0027Invalid value %(param)s for %(param_string)s. \u0027"},{"line_number":618,"context_line":"                \u0027Expecting a boolean.\u0027) % {\u0027param\u0027: param,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_e04913d2","line":615,"updated":"2016-09-29 03:40:19.000000000","message":"default value should also be set as a parameter here, for the circumstance that strict is False.","commit_id":"9f30c0580218b40991fd509d88db17983f895d43"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"9cbe3c45269ab4dc17ee17dbd41051df3f454dde","unresolved":false,"context_lines":[{"line_number":612,"context_line":"def get_bool_from_params(key, params, default\u003dFalse, strict\u003dTrue):"},{"line_number":613,"context_line":"    param \u003d params.get(key, default)"},{"line_number":614,"context_line":"    try:"},{"line_number":615,"context_line":"        param \u003d strutils.bool_from_string(param, strict\u003dstrict)"},{"line_number":616,"context_line":"    except ValueError:"},{"line_number":617,"context_line":"        msg \u003d _(\u0027Invalid value %(param)s for %(param_string)s. \u0027"},{"line_number":618,"context_line":"                \u0027Expecting a boolean.\u0027) % {\u0027param\u0027: param,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_cc46767a","line":615,"in_reply_to":"3a98d1f4_e04913d2","updated":"2016-10-09 00:57:46.000000000","message":"Done","commit_id":"9f30c0580218b40991fd509d88db17983f895d43"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"64ab47141a434eab8f2bfd3c3fd40607d3d5f0c8","unresolved":false,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"def get_bool_from_api_params(key, params, default\u003dFalse, strict\u003dTrue):"},{"line_number":567,"context_line":"    param \u003d params.get(key, default)"},{"line_number":568,"context_line":"    try:"},{"line_number":569,"context_line":"        param \u003d strutils.bool_from_string(param,"},{"line_number":570,"context_line":"                                          strict\u003dstrict,"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_5e30a9e8","line":567,"updated":"2016-10-19 12:40:39.000000000","message":"Better to add docstring here. So, that anyone looking at source code will get know how and where to use it just reading docstring and not searching for existing usages.","commit_id":"bc89be612bc0d6ffe48976219376003d3b05b871"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"fcc04e327b3c14780aa27ad369e89a77e188d043","unresolved":false,"context_lines":[{"line_number":567,"context_line":"    \"\"\"Parse bool value from request params."},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    HTTPBadRequest will be directly raised either of the cases below:"},{"line_number":570,"context_line":"    1. invalid bool string was found by key."},{"line_number":571,"context_line":"    2. key not found while default value is invalid."},{"line_number":572,"context_line":"    \"\"\""},{"line_number":573,"context_line":"    param \u003d params.get(key, default)"},{"line_number":574,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_3d4d9e99","line":571,"range":{"start_line":570,"start_character":4,"end_line":571,"end_character":52},"updated":"2016-10-20 03:59:33.000000000","message":"and strict must be True, otherwise, default will be returned.","commit_id":"8ada7bf591be7ceff6ca07f6f5b7a27d9d65f29e"}]}
