)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22369,"name":"Anshu Kumar","email":"anshu.choubey@imaginea.com","username":"anshu.kch"},"change_message_id":"cd0939b89dec1b8735468b3bcbe5365825eec0b9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix mask_dict_password for non string/dict type key in dict"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"mask_dict_password method remove the keys from passed dict if those"},{"line_number":10,"context_line":"are not of"},{"line_number":11,"context_line":"- indicative of password"},{"line_number":12,"context_line":"- Dict"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_789303fb","line":9,"range":{"start_line":9,"start_character":26,"end_line":9,"end_character":32},"updated":"2016-07-10 06:23:52.000000000","message":"removes","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix mask_dict_password for non string/dict type key in dict"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"mask_dict_password method remove the keys from passed dict if those"},{"line_number":10,"context_line":"are not of"},{"line_number":11,"context_line":"- indicative of password"},{"line_number":12,"context_line":"- Dict"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_21a5c303","line":9,"range":{"start_line":9,"start_character":26,"end_line":9,"end_character":32},"in_reply_to":"1aa78d24_789303fb","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":22369,"name":"Anshu Kumar","email":"anshu.choubey@imaginea.com","username":"anshu.kch"},"change_message_id":"cd0939b89dec1b8735468b3bcbe5365825eec0b9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix mask_dict_password for non string/dict type key in dict"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"mask_dict_password method remove the keys from passed dict if those"},{"line_number":10,"context_line":"are not of"},{"line_number":11,"context_line":"- indicative of password"},{"line_number":12,"context_line":"- Dict"},{"line_number":13,"context_line":"- String type"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_1b3599da","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":10},"updated":"2016-07-10 06:23:52.000000000","message":"of can be removed","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix mask_dict_password for non string/dict type key in dict"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"mask_dict_password method remove the keys from passed dict if those"},{"line_number":10,"context_line":"are not of"},{"line_number":11,"context_line":"- indicative of password"},{"line_number":12,"context_line":"- Dict"},{"line_number":13,"context_line":"- String type"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_01a887da","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":10},"in_reply_to":"1aa78d24_1b3599da","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":22369,"name":"Anshu Kumar","email":"anshu.choubey@imaginea.com","username":"anshu.kch"},"change_message_id":"cd0939b89dec1b8735468b3bcbe5365825eec0b9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- Dict"},{"line_number":13,"context_line":"- String type"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So key with value None of other type than string/dict are being removed."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This method should just change the password with secret and retur other"},{"line_number":18,"context_line":"Key as it is without any removal or alter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_d8b83778","line":15,"range":{"start_line":15,"start_character":3,"end_line":15,"end_character":6},"updated":"2016-07-10 06:23:52.000000000","message":"keys","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":22369,"name":"Anshu Kumar","email":"anshu.choubey@imaginea.com","username":"anshu.kch"},"change_message_id":"cd0939b89dec1b8735468b3bcbe5365825eec0b9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- Dict"},{"line_number":13,"context_line":"- String type"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So key with value None of other type than string/dict are being removed."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This method should just change the password with secret and retur other"},{"line_number":18,"context_line":"Key as it is without any removal or alter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_98beaf62","line":15,"range":{"start_line":15,"start_character":23,"end_line":15,"end_character":25},"updated":"2016-07-10 06:23:52.000000000","message":"or","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- Dict"},{"line_number":13,"context_line":"- String type"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So key with value None of other type than string/dict are being removed."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This method should just change the password with secret and retur other"},{"line_number":18,"context_line":"Key as it is without any removal or alter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_61afcbe3","line":15,"range":{"start_line":15,"start_character":23,"end_line":15,"end_character":25},"in_reply_to":"1aa78d24_98beaf62","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- Dict"},{"line_number":13,"context_line":"- String type"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So key with value None of other type than string/dict are being removed."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This method should just change the password with secret and retur other"},{"line_number":18,"context_line":"Key as it is without any removal or alter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_41aa8fd3","line":15,"range":{"start_line":15,"start_character":3,"end_line":15,"end_character":6},"in_reply_to":"1aa78d24_d8b83778","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"b3b84b5fc9ce04352486b6ec9dfa116234289d60","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So key with value None of other type than string/dict are being removed."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This method should just change the password with secret and retur other"},{"line_number":18,"context_line":"Key as it is without any removal or alter."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I21294ce6fd25a3e6438de41949d4427b17945bb2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_38269b16","line":17,"range":{"start_line":17,"start_character":60,"end_line":17,"end_character":65},"updated":"2016-07-10 05:06:44.000000000","message":"return","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So key with value None of other type than string/dict are being removed."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This method should just change the password with secret and retur other"},{"line_number":18,"context_line":"Key as it is without any removal or alter."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I21294ce6fd25a3e6438de41949d4427b17945bb2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_a1b9b330","line":17,"range":{"start_line":17,"start_character":60,"end_line":17,"end_character":65},"in_reply_to":"1aa78d24_38269b16","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"}],"oslo_utils/strutils.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6e8b62d3e474183107d72b4ee4dfcc6b6ec22c73","unresolved":false,"context_lines":[{"line_number":371,"context_line":"            if isinstance(v, six.string_types):"},{"line_number":372,"context_line":"                out[k] \u003d mask_password(v, secret\u003dsecret)"},{"line_number":373,"context_line":"            else:"},{"line_number":374,"context_line":"                out[k] \u003d v"},{"line_number":375,"context_line":"    return out"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_4f879112","line":374,"updated":"2016-07-08 12:14:52.000000000","message":"nit this works but it might be more straightforward to change L356 to:\n\n  out \u003d dict(dictionary)\n\nthat way we\u0027re clearly overwriting selected keys of a copy in the for loop.","commit_id":"45dbf04c24aa61ff3c75378935a1174ad432e239"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"ba35b4d29b523b9e668f7702fc444639a317a0bb","unresolved":false,"context_lines":[{"line_number":371,"context_line":"            if isinstance(v, six.string_types):"},{"line_number":372,"context_line":"                out[k] \u003d mask_password(v, secret\u003dsecret)"},{"line_number":373,"context_line":"            else:"},{"line_number":374,"context_line":"                out[k] \u003d v"},{"line_number":375,"context_line":"    return out"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d546427a","line":374,"in_reply_to":"1aa78d24_4f879112","updated":"2016-07-10 01:55:24.000000000","message":"Done","commit_id":"45dbf04c24aa61ff3c75378935a1174ad432e239"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"b3b84b5fc9ce04352486b6ec9dfa116234289d60","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":354,"context_line":"                        % type(dictionary))"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    out \u003d dictionary"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    for k, v in dictionary.items():"},{"line_number":359,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_d80e778b","line":356,"updated":"2016-07-10 05:06:44.000000000","message":"I think should do:\n\n out \u003d copy.deepcopy(dictionary)","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":354,"context_line":"                        % type(dictionary))"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    out \u003d dictionary"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    for k, v in dictionary.items():"},{"line_number":359,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_017fe766","line":356,"in_reply_to":"1aa78d24_d80e778b","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":22369,"name":"Anshu Kumar","email":"anshu.choubey@imaginea.com","username":"anshu.kch"},"change_message_id":"cd0939b89dec1b8735468b3bcbe5365825eec0b9","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":354,"context_line":"                        % type(dictionary))"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    out \u003d dictionary"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    for k, v in dictionary.items():"},{"line_number":359,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_dbccb1bd","line":356,"in_reply_to":"1aa78d24_d80e778b","updated":"2016-07-10 06:23:52.000000000","message":"IMHO patch 1 changes were good enough.\n\nIf we intend to modify the source dictionary, we can work on \"dictionary\" right away and get rid of \"out\".\n\nIf not, we can use deepcopy as suggested. Though I think, patch set 1 approach would be less costlier and equally straightforward if not more.","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":354,"context_line":"                        % type(dictionary))"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    out \u003d dictionary"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    for k, v in dictionary.items():"},{"line_number":359,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_61c4eb91","line":356,"in_reply_to":"1aa78d24_dbccb1bd","updated":"2016-07-11 00:27:31.000000000","message":"Ok, So I am moving with the deepcopy approach.","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7612fdc498c20bbb114b2715a13a64bf7852ac7b","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":355,"context_line":"                        % type(dictionary))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    out \u003d copy.deepcopy(dictionary)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    for k, v in dictionary.items():"},{"line_number":360,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_3c731917","line":357,"range":{"start_line":357,"start_character":15,"end_line":357,"end_character":23},"updated":"2016-07-11 10:07:08.000000000","message":"The shallow copy.copy is fine for our purposes","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"f3ac75ae6d559c394c644a1ccb2de4c9ffc833b5","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":355,"context_line":"                        % type(dictionary))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    out \u003d copy.deepcopy(dictionary)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    for k, v in dictionary.items():"},{"line_number":360,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_49660052","line":357,"range":{"start_line":357,"start_character":15,"end_line":357,"end_character":23},"in_reply_to":"1aa78d24_22776a3b","updated":"2016-07-11 23:50:42.000000000","message":"Right, we should use deepcopy only.","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"fd5f5f4f7a09fc0c62fb2e73bd381904faaca99e","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":355,"context_line":"                        % type(dictionary))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    out \u003d copy.deepcopy(dictionary)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    for k, v in dictionary.items():"},{"line_number":360,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_bc841fb1","line":357,"range":{"start_line":357,"start_character":15,"end_line":357,"end_character":23},"in_reply_to":"1aa78d24_3c731917","updated":"2016-07-11 13:23:27.000000000","message":"How do you know that? I disagree.\n\n dictionary \u003d { \u0027foo\u0027: {\u0027blah\u0027: {\u0027password\u0027: \u0027secret\u0027} } }\n\nI think a shallow copy might cause it to get modified in the original.\n\ndeepcopy is known safe. Shallow copy I\u0027m not sure it is safe. Maybe it is, but I\u0027m not sure.","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"81f4193b7ecb561e54f6867a5bcb4a5fde5677ac","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":355,"context_line":"                        % type(dictionary))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    out \u003d copy.deepcopy(dictionary)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    for k, v in dictionary.items():"},{"line_number":360,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_dc9f7501","line":357,"range":{"start_line":357,"start_character":15,"end_line":357,"end_character":23},"in_reply_to":"1aa78d24_3c731917","updated":"2016-07-11 10:10:31.000000000","message":"or, y\u0027know, dict(dictionary) like I said on PS#1","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c8a2cb0ab96d059780cd29c9db0aa4630ccd19e8","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        raise TypeError(\"Expected a dictionary, got %s instead.\""},{"line_number":355,"context_line":"                        % type(dictionary))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    out \u003d copy.deepcopy(dictionary)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    for k, v in dictionary.items():"},{"line_number":360,"context_line":"        if isinstance(v, dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_22776a3b","line":357,"range":{"start_line":357,"start_character":15,"end_line":357,"end_character":23},"in_reply_to":"1aa78d24_bc841fb1","updated":"2016-07-11 13:51:47.000000000","message":"Oops, forgot this was fully recursive","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"}],"oslo_utils/tests/test_strutils.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6be7bd1beb0599d1807c06d594c15a98306bc63e","unresolved":false,"context_lines":[{"line_number":641,"context_line":"                         strutils.mask_dict_password(payload))"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027nonekey\u0027: None, \u0027nonstr\u0027: 123}"},{"line_number":645,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027nonekey\u0027: None, \u0027nonstr\u0027: 123}"},{"line_number":646,"context_line":"        self.assertEqual(expected,"},{"line_number":647,"context_line":"                         strutils.mask_dict_password(payload))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_98622f3c","line":644,"updated":"2016-07-10 05:13:47.000000000","message":"how about:\n\n payload \u003d {\u0027bool\u0027: True, \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1,\n         \u0027int\u0027: 123, \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}\n expected \u003d {\u0027bool\u0027: True, \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1,\n   \u0027int\u0027: 123, \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2ce27bdcce002cca8f6fd749a955aad26db3e78b","unresolved":false,"context_lines":[{"line_number":641,"context_line":"                         strutils.mask_dict_password(payload))"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027nonekey\u0027: None, \u0027nonstr\u0027: 123}"},{"line_number":645,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027nonekey\u0027: None, \u0027nonstr\u0027: 123}"},{"line_number":646,"context_line":"        self.assertEqual(expected,"},{"line_number":647,"context_line":"                         strutils.mask_dict_password(payload))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_e1361bb3","line":644,"in_reply_to":"1aa78d24_98622f3c","updated":"2016-07-11 00:27:31.000000000","message":"Done","commit_id":"71dbcb0d0945628e563d44795286cb706410a2b4"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"81f4193b7ecb561e54f6867a5bcb4a5fde5677ac","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027bool\u0027: True,"},{"line_number":645,"context_line":"                   \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":646,"context_line":"                   \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"},{"line_number":647,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027bool\u0027: True,"},{"line_number":648,"context_line":"                    \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":649,"context_line":"                    \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_702665bb","line":646,"updated":"2016-07-11 10:10:31.000000000","message":"This payload would be better:\n\n  {\u0027password\u0027: \u0027DK0PK1AK3\u0027,\n   \u0027ok\u0027: True,\n   \u0027dict\u0027: {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027ok\u0027: True}}\n\nThere\u0027s no need to iterate every type when the test is on key names","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"fd5f5f4f7a09fc0c62fb2e73bd381904faaca99e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027bool\u0027: True,"},{"line_number":645,"context_line":"                   \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":646,"context_line":"                   \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"},{"line_number":647,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027bool\u0027: True,"},{"line_number":648,"context_line":"                    \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":649,"context_line":"                    \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_fc7ce7b6","line":646,"in_reply_to":"1aa78d24_702665bb","updated":"2016-07-11 13:23:27.000000000","message":"The test isn\u0027t on key names entirely. It is on data type also.\n\nI would vote for more thorough unit test, but then again I did suggest this payload :)","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"f3ac75ae6d559c394c644a1ccb2de4c9ffc833b5","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027bool\u0027: True,"},{"line_number":645,"context_line":"                   \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":646,"context_line":"                   \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"},{"line_number":647,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027bool\u0027: True,"},{"line_number":648,"context_line":"                    \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":649,"context_line":"                    \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_09f7d859","line":646,"in_reply_to":"1aa78d24_a2feba68","updated":"2016-07-11 23:50:42.000000000","message":"This tests covers the key\u0027s data type issue and make sure none of the key(of any type/value) gets truncated from passed dict. \n\nI agree we can have as many tests as we want but may be we can enhance the tests coverage later as per patch scope.","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"92a46c86bd13751c5884825a64bcd937abda169e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027bool\u0027: True,"},{"line_number":645,"context_line":"                   \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":646,"context_line":"                   \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"},{"line_number":647,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027bool\u0027: True,"},{"line_number":648,"context_line":"                    \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":649,"context_line":"                    \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_f604b64a","line":646,"in_reply_to":"1aa78d24_a2feba68","updated":"2016-07-12 17:52:31.000000000","message":"What additional tests do you think are needed? I\u0027m not understanding what is meant by \"branch coverage\"","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c8a2cb0ab96d059780cd29c9db0aa4630ccd19e8","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def test_other_non_str_values(self):"},{"line_number":644,"context_line":"        payload \u003d {\u0027password\u0027: \u0027DK0PK1AK3\u0027, \u0027bool\u0027: True,"},{"line_number":645,"context_line":"                   \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":646,"context_line":"                   \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"},{"line_number":647,"context_line":"        expected \u003d {\u0027password\u0027: \u0027***\u0027, \u0027bool\u0027: True,"},{"line_number":648,"context_line":"                    \u0027dict\u0027: {\u0027cat\u0027: \u0027meow\u0027}, \u0027float\u0027: 0.1, \u0027int\u0027: 123,"},{"line_number":649,"context_line":"                    \u0027list\u0027: [1, 2], \u0027none\u0027: None, \u0027str\u0027: \u0027foo\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_a2feba68","line":646,"in_reply_to":"1aa78d24_fc7ce7b6","updated":"2016-07-11 13:51:47.000000000","message":"We need more unit tests really, one is not enough.\n\nYou\u0027re right the data type does play a part - guess I wasn\u0027t really awake yet this morning! - but this test doesn\u0027t provide branch coverage.","commit_id":"45120e11720febfa83d1f42532ea86916b798fc1"}]}
