)]}'
{"aodhclient/exceptions.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"01da7caa9d417b63000bc31a9161e8cb5e23bdf0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"class BaseException(Exception):"},{"line_number":16,"context_line":"    \"\"\"An error occurred.\"\"\""},{"line_number":17,"context_line":"    def __init__(self, message\u003dNone):"},{"line_number":18,"context_line":"        self.message \u003d message"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_b3d8ed54","line":15,"updated":"2016-01-28 10:30:59.000000000","message":"Why do we need that?","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"}],"aodhclient/tests/unit/test_utils.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"141b7035f29e1f380ed48f5b0c4a68de27f5466e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                          {\"\u003d\": {\"foo\": \"quote\"}},"},{"line_number":85,"context_line":"                      ]})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_args_array_to_list_of_dicts(self):"},{"line_number":88,"context_line":"        starts \u003d [\u00270 11 * * *\u0027, \u0027\"0 11 * * *\"\u0027, \u0027\\\u00270 11 * * *\\\u0027\u0027]"},{"line_number":89,"context_line":"        timezones \u003d [None, \u0027US/Eastern\u0027, \u0027\"US/Eastern\"\u0027, \u0027\\\u0027US/Eastern\\\u0027\u0027]"},{"line_number":90,"context_line":"        descs \u003d [None, \u0027de sc\u0027, \u0027\"de sc\"\u0027, \u0027\\\u0027de sc\\\u0027\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_72e7d6e4","line":87,"range":{"start_line":87,"start_character":45,"end_line":87,"end_character":47},"updated":"2016-01-28 09:03:15.000000000","message":"We should also test for exception raise case","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":18137,"name":"Xia Linjuan","email":"ljxiash@cn.ibm.com","username":"xialinjuan"},"change_message_id":"f788d0c609671019d53c7b122b3c7b6dd8b52539","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                          {\"\u003d\": {\"foo\": \"quote\"}},"},{"line_number":85,"context_line":"                      ]})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_args_array_to_list_of_dicts(self):"},{"line_number":88,"context_line":"        starts \u003d [\u00270 11 * * *\u0027, \u0027\"0 11 * * *\"\u0027, \u0027\\\u00270 11 * * *\\\u0027\u0027]"},{"line_number":89,"context_line":"        timezones \u003d [None, \u0027US/Eastern\u0027, \u0027\"US/Eastern\"\u0027, \u0027\\\u0027US/Eastern\\\u0027\u0027]"},{"line_number":90,"context_line":"        descs \u003d [None, \u0027de sc\u0027, \u0027\"de sc\"\u0027, \u0027\\\u0027de sc\\\u0027\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_4a809e46","line":87,"range":{"start_line":87,"start_character":45,"end_line":87,"end_character":47},"in_reply_to":"7a5de9d1_72e7d6e4","updated":"2016-01-29 09:28:48.000000000","message":"Yep, thanks, I will add it in the patchset","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"}],"aodhclient/utils.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"141b7035f29e1f380ed48f5b0c4a68de27f5466e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import exceptions as exc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import pyparsing as pp"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_32f95e81","line":15,"range":{"start_line":15,"start_character":21,"end_line":15,"end_character":24},"updated":"2016-01-28 09:03:15.000000000","message":"this should be \"from aodhclient import exceptions as exc\", otherwise, you\u0027re importing python2\u0027s own exceptions module.","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":18137,"name":"Xia Linjuan","email":"ljxiash@cn.ibm.com","username":"xialinjuan"},"change_message_id":"f788d0c609671019d53c7b122b3c7b6dd8b52539","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import exceptions as exc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import pyparsing as pp"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_6ad1da56","line":15,"range":{"start_line":15,"start_character":21,"end_line":15,"end_character":24},"in_reply_to":"7a5de9d1_32f95e81","updated":"2016-01-29 09:28:48.000000000","message":"Thank you for telling me this. I will make change.","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"141b7035f29e1f380ed48f5b0c4a68de27f5466e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     if v is not None])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"def args_array_to_list_of_dicts(key_to_convert, value_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts [\u0027a\u003d1;b\u003d2\u0027,\u0027c\u003d3;d\u003d4\u0027] to [{a:1,b:2},{c:3,d:4}].\"\"\""},{"line_number":133,"context_line":"    lis \u003d list()"},{"line_number":134,"context_line":"    if value_to_convert:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_8dcfd3af","line":131,"range":{"start_line":131,"start_character":64,"end_line":131,"end_character":66},"updated":"2016-01-28 09:03:15.000000000","message":"seems the key_to_convert only used for error message? how about passing parsed_args as a dict into this method instead of value_to_convert, and use key_to_convert to extract the content.","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":18137,"name":"Xia Linjuan","email":"ljxiash@cn.ibm.com","username":"xialinjuan"},"change_message_id":"f788d0c609671019d53c7b122b3c7b6dd8b52539","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     if v is not None])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"def args_array_to_list_of_dicts(key_to_convert, value_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts [\u0027a\u003d1;b\u003d2\u0027,\u0027c\u003d3;d\u003d4\u0027] to [{a:1,b:2},{c:3,d:4}].\"\"\""},{"line_number":133,"context_line":"    lis \u003d list()"},{"line_number":134,"context_line":"    if value_to_convert:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_a02131fd","line":131,"range":{"start_line":131,"start_character":64,"end_line":131,"end_character":66},"in_reply_to":"7a5de9d1_8dcfd3af","updated":"2016-01-29 09:28:48.000000000","message":"yes, will change to that.","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"141b7035f29e1f380ed48f5b0c4a68de27f5466e","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                dic \u003d dict()"},{"line_number":139,"context_line":"                for pair in pairs:"},{"line_number":140,"context_line":"                    kv \u003d pair.split(\"\u003d\", 1)"},{"line_number":141,"context_line":"                    dic[kv[0]] \u003d kv[1].strip(\" \\\"\u0027\")  # strip spaces and quotes"},{"line_number":142,"context_line":"                lis.append(dic)"},{"line_number":143,"context_line":"        except Exception:"},{"line_number":144,"context_line":"            raise exc.CommandError("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_6d829702","line":141,"range":{"start_line":141,"start_character":73,"end_line":141,"end_character":79},"updated":"2016-01-28 09:03:15.000000000","message":"how about stripping space in key too?","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":18137,"name":"Xia Linjuan","email":"ljxiash@cn.ibm.com","username":"xialinjuan"},"change_message_id":"f788d0c609671019d53c7b122b3c7b6dd8b52539","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                dic \u003d dict()"},{"line_number":139,"context_line":"                for pair in pairs:"},{"line_number":140,"context_line":"                    kv \u003d pair.split(\"\u003d\", 1)"},{"line_number":141,"context_line":"                    dic[kv[0]] \u003d kv[1].strip(\" \\\"\u0027\")  # strip spaces and quotes"},{"line_number":142,"context_line":"                lis.append(dic)"},{"line_number":143,"context_line":"        except Exception:"},{"line_number":144,"context_line":"            raise exc.CommandError("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_6061f938","line":141,"range":{"start_line":141,"start_character":73,"end_line":141,"end_character":79},"in_reply_to":"7a5de9d1_6d829702","updated":"2016-01-29 09:28:48.000000000","message":"Done","commit_id":"fc5b5ed25248f218d091fb5541b585f3803797f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b287ac65920c670921be72a3668573377e35c14c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"def args_array_to_list_of_dicts(parsed_args, key_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts [\u0027a\u003d1;b\u003d2\u0027,\u0027c\u003d3;d\u003d4\u0027] to [{a:1,b:2},{c:3,d:4}].\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    values_to_convert \u003d getattr(parsed_args, key_to_convert)"},{"line_number":135,"context_line":"    if values_to_convert:"},{"line_number":136,"context_line":"        lst \u003d []"},{"line_number":137,"context_line":"        for item in values_to_convert:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a5ae5dd_05255c07","line":134,"updated":"2016-02-08 09:45:17.000000000","message":"don\u0027t do that here, just pass one argument","commit_id":"185e9870ae09da33317090cd15eb91956ee2e606"},{"author":{"_account_id":18137,"name":"Xia Linjuan","email":"ljxiash@cn.ibm.com","username":"xialinjuan"},"change_message_id":"6ee9bd3f126aae9605df2dd02712350288a8d9af","unresolved":false,"context_lines":[{"line_number":131,"context_line":"def args_array_to_list_of_dicts(parsed_args, key_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts [\u0027a\u003d1;b\u003d2\u0027,\u0027c\u003d3;d\u003d4\u0027] to [{a:1,b:2},{c:3,d:4}].\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    values_to_convert \u003d getattr(parsed_args, key_to_convert)"},{"line_number":135,"context_line":"    if values_to_convert:"},{"line_number":136,"context_line":"        lst \u003d []"},{"line_number":137,"context_line":"        for item in values_to_convert:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a5ae5dd_8005ba11","line":134,"in_reply_to":"5a5ae5dd_05255c07","updated":"2016-02-08 09:50:14.000000000","message":"OK, will do it. Thanks for your review","commit_id":"185e9870ae09da33317090cd15eb91956ee2e606"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b287ac65920c670921be72a3668573377e35c14c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5a5ae5dd_25e738ad","line":153,"updated":"2016-02-08 09:45:17.000000000","message":"please just write\n\ntry:\n   return dict(kv.split(\"\u003d\", 1) for kv in s.split(\";\"))\nexcept ValueError:\n  raise CommandError(…)","commit_id":"185e9870ae09da33317090cd15eb91956ee2e606"},{"author":{"_account_id":18137,"name":"Xia Linjuan","email":"ljxiash@cn.ibm.com","username":"xialinjuan"},"change_message_id":"6ee9bd3f126aae9605df2dd02712350288a8d9af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5a5ae5dd_453d94db","line":153,"in_reply_to":"5a5ae5dd_25e738ad","updated":"2016-02-08 09:50:14.000000000","message":"Thank you for your review! will do it.","commit_id":"185e9870ae09da33317090cd15eb91956ee2e606"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"b141f562b13a723e358fec95e089ae4f3cab1263","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     if v is not None])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"def args_array_to_list_of_dicts(values_to_convert, key_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts [\u0027a\u003d1;b\u003d2\u0027,\u0027c\u003d3;d\u003d4\u0027] to [{a:1,b:2},{c:3,d:4}].\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    lst \u003d []"}],"source_content_type":"text/x-python","patch_set":15,"id":"5aef4532_afe37d32","line":131,"range":{"start_line":131,"start_character":65,"end_line":131,"end_character":67},"updated":"2016-03-08 09:20:00.000000000","message":"it seems that the key_to_convert is only used for raise exceptions. how about move that kind of things into the caller? \n\nOr a even better clean and nice solution: we leverage the  type parameter in ArgumentParser.add_argument() to do the syntax validation work. see https://docs.python.org/2/library/argparse.html#type as the example.","commit_id":"c5b062e502016d28c75d3d5ca35211f933fed388"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"8b0999b8d5b93a82d328aad0ddeceb6bc57ebab6","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     if v is not None])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"def args_array_to_list_of_dicts(values_to_convert, key_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts [\u0027a\u003d1;b\u003d2\u0027,\u0027c\u003d3;d\u003d4\u0027] to [{a:1,b:2},{c:3,d:4}].\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    lst \u003d []"}],"source_content_type":"text/x-python","patch_set":15,"id":"5aef4532_2fbacd6e","line":131,"range":{"start_line":131,"start_character":65,"end_line":131,"end_character":67},"in_reply_to":"5aef4532_afe37d32","updated":"2016-03-08 09:36:55.000000000","message":"What llu said!","commit_id":"c5b062e502016d28c75d3d5ca35211f933fed388"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"48d4d5a4c7240770124123b350219cb7c7ed15a4","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     if v is not None])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"def string_to_dict(values_to_convert):"},{"line_number":132,"context_line":"    \"\"\"Converts \u0027a\u003d1;b\u003d2\u0027 to {a:1,b:2}.\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5aef4532_39065a1d","line":131,"updated":"2016-03-09 11:35:15.000000000","message":"1. don\u0027t put that here, put it where it\u0027s used (in the other file using it)\n\n2. give it a better name please :)","commit_id":"154b88249e5f1b2732ec857865bf98af200d5336"}],"aodhclient/v2/alarm_cli.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7cba073f0b9431fc4a7cf3d8d00842b948ab2f7a","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self.parser \u003d parser"},{"line_number":236,"context_line":"        return parser"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def validate_time_constraint(self, values_to_convert):"},{"line_number":239,"context_line":"        \"\"\"Converts \u0027a\u003d1;b\u003d2\u0027 to {a:1,b:2}.\"\"\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"3afc51ec_2075b797","line":238,"updated":"2016-03-14 10:50:21.000000000","message":"@staticmethod","commit_id":"b47f86dd036bdd29d0c245cc7c18e5b99b5b6283"}]}
