)]}'
{"oslo/messaging/_drivers/common.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"fdd45c55228b59a80c0dc50de73fd1ee6f55665f","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return d"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    res \u003d log_func(msg, _fix_passwords(copy.deepcopy(msg_data)))"},{"line_number":178,"context_line":"    _fix_passwords \u003d None"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    return res"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_6eb8332b","line":178,"updated":"2014-09-08 14:00:06.000000000","message":"Please describe, where is cycle reference there?","commit_id":"e8620579b3354df68e24a6a04b1e471aa7182c3f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"97f4229e8993a4ab937033acefcf61305c821438","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return d"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    res \u003d log_func(msg, _fix_passwords(copy.deepcopy(msg_data)))"},{"line_number":178,"context_line":"    _fix_passwords \u003d None"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    return res"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_f4aeb480","line":178,"in_reply_to":"fa98f980_26a0d242","updated":"2014-09-17 09:25:59.000000000","message":"Move the function on top of the module, it should fixed the issue too.","commit_id":"e8620579b3354df68e24a6a04b1e471aa7182c3f"},{"author":{"_account_id":12484,"name":"jazeltq","email":"tianqing@unitedstack.com","username":"litianqing"},"change_message_id":"d00d8a36735ae8ca16458508fa0fb341057c3bd3","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return d"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    res \u003d log_func(msg, _fix_passwords(copy.deepcopy(msg_data)))"},{"line_number":178,"context_line":"    _fix_passwords \u003d None"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    return res"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_eaaea4e6","line":178,"in_reply_to":"fa98f980_6eb8332b","updated":"2014-09-09 14:28:27.000000000","message":"_fix_passwords references to itself.","commit_id":"e8620579b3354df68e24a6a04b1e471aa7182c3f"},{"author":{"_account_id":12484,"name":"jazeltq","email":"tianqing@unitedstack.com","username":"litianqing"},"change_message_id":"2a4d3cdb3c9aa5f21c3a2b026cdeaf542a1a5841","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return d"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    res \u003d log_func(msg, _fix_passwords(copy.deepcopy(msg_data)))"},{"line_number":178,"context_line":"    _fix_passwords \u003d None"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    return res"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_26a0d242","line":178,"in_reply_to":"fa98f980_6eb8332b","updated":"2014-09-10 06:40:54.000000000","message":"_fix_passwords.func_closure references to itself. so the gc can not collect it.","commit_id":"e8620579b3354df68e24a6a04b1e471aa7182c3f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"a330dd4d80e5e3b0a5caa31d6b4391c4d533b54a","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_REMOTE_POSTFIX \u003d \u0027_Remote\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"SANITIZE \u003d [\u0027_context_auth_token\u0027, \u0027auth_token\u0027, \u0027new_pass\u0027]"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class RPCException(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_4e744436","line":72,"updated":"2014-09-17 15:12:34.000000000","message":"Add a _ on the beginning, this doesn\u0027t need to be public","commit_id":"8e09b873198a14dc3dd2d624b7eea31125ee32e2"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7287ab0e5bb39b5a8a47945e26447fd87850a6e4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        raise NotImplementedError()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _fix_passwords(d):"},{"line_number":165,"context_line":"    \"\"\"Sanitizes the password fields in the dictionary.\"\"\""},{"line_number":166,"context_line":"    for k in six.iterkeys(d):"},{"line_number":167,"context_line":"        if k.lower().find(\u0027password\u0027) !\u003d -1:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_8891c7f3","line":164,"updated":"2014-09-17 12:34:26.000000000","message":"I like it! I had doubted in the first solution. But this one looks simple and logical.","commit_id":"8e09b873198a14dc3dd2d624b7eea31125ee32e2"}]}
