)]}'
{"integration/tests/examples/examples/client.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        my_string \u003d myre.sub(r\u0027\u003e\\g\u003c1\u003e\u0027, my_string)\r"},{"line_number":77,"context_line":"        my_string \u003d xml.dom.minidom.parseString(my_string).toprettyxml()\r"},{"line_number":78,"context_line":"        # remove line breaks\r"},{"line_number":79,"context_line":"        my_re \u003d re.compile(\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027, re.DOTALL)\r"},{"line_number":80,"context_line":"        my_string \u003d my_re.sub(r\u0027\u003e\\g\u003c1\u003e\u003c/\u0027, my_string)\r"},{"line_number":81,"context_line":"        return my_string\r"},{"line_number":82,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_9043e56c","line":79,"updated":"2018-06-19 07:49:47.000000000","message":"Use raw strings should also fine here?","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"9847098b9128fb1a7828f63065cbbed85aec39bf","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        my_string \u003d myre.sub(r\u0027\u003e\\g\u003c1\u003e\u0027, my_string)\r"},{"line_number":77,"context_line":"        my_string \u003d xml.dom.minidom.parseString(my_string).toprettyxml()\r"},{"line_number":78,"context_line":"        # remove line breaks\r"},{"line_number":79,"context_line":"        my_re \u003d re.compile(\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027, re.DOTALL)\r"},{"line_number":80,"context_line":"        my_string \u003d my_re.sub(r\u0027\u003e\\g\u003c1\u003e\u003c/\u0027, my_string)\r"},{"line_number":81,"context_line":"        return my_string\r"},{"line_number":82,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f860d60f","line":79,"in_reply_to":"5f7c97a3_24614aa9","updated":"2018-06-20 15:27:21.000000000","message":"As patterns will be compiled by re, so I think r\u0027\u003e\\n\\s+([^\u003c\u003e\\s].*?)\\n\\s+\u003c/\u0027 should work as expected(as we always use r\u0027\\n\u0027 as a re pattern, right?)","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        my_string \u003d myre.sub(r\u0027\u003e\\g\u003c1\u003e\u0027, my_string)\r"},{"line_number":77,"context_line":"        my_string \u003d xml.dom.minidom.parseString(my_string).toprettyxml()\r"},{"line_number":78,"context_line":"        # remove line breaks\r"},{"line_number":79,"context_line":"        my_re \u003d re.compile(\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027, re.DOTALL)\r"},{"line_number":80,"context_line":"        my_string \u003d my_re.sub(r\u0027\u003e\\g\u003c1\u003e\u003c/\u0027, my_string)\r"},{"line_number":81,"context_line":"        return my_string\r"},{"line_number":82,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_24614aa9","line":79,"in_reply_to":"5f7c97a3_9043e56c","updated":"2018-06-20 14:31:01.000000000","message":"not really because then the \\n gets also double escaped\nso after evaluation you would get:\n\u0027\u003e\\\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\\\n\\\\s+\u003c/\u0027 instead of\n\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"integration/tests/examples/examples/example_generation.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        my_string \u003d myre.sub(r\u0027\u003e\\g\u003c1\u003e\u0027, my_string)"},{"line_number":179,"context_line":"        my_string \u003d xml.dom.minidom.parseString(my_string).toprettyxml()"},{"line_number":180,"context_line":"        # remove line breaks"},{"line_number":181,"context_line":"        my_re \u003d re.compile(\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027, re.DOTALL)"},{"line_number":182,"context_line":"        my_string \u003d my_re.sub(r\u0027\u003e\\g\u003c1\u003e\u003c/\u0027, my_string)"},{"line_number":183,"context_line":"        return my_string"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4b7b5c28","line":181,"updated":"2018-06-19 07:49:47.000000000","message":"Ditto, raw string should be fine.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        my_string \u003d myre.sub(r\u0027\u003e\\g\u003c1\u003e\u0027, my_string)"},{"line_number":179,"context_line":"        my_string \u003d xml.dom.minidom.parseString(my_string).toprettyxml()"},{"line_number":180,"context_line":"        # remove line breaks"},{"line_number":181,"context_line":"        my_re \u003d re.compile(\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027, re.DOTALL)"},{"line_number":182,"context_line":"        my_string \u003d my_re.sub(r\u0027\u003e\\g\u003c1\u003e\u003c/\u0027, my_string)"},{"line_number":183,"context_line":"        return my_string"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_646662be","line":181,"in_reply_to":"5f7c97a3_4b7b5c28","updated":"2018-06-20 14:31:01.000000000","message":"the same as previous \\\\n instead of \\n","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"9847098b9128fb1a7828f63065cbbed85aec39bf","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        my_string \u003d myre.sub(r\u0027\u003e\\g\u003c1\u003e\u0027, my_string)"},{"line_number":179,"context_line":"        my_string \u003d xml.dom.minidom.parseString(my_string).toprettyxml()"},{"line_number":180,"context_line":"        # remove line breaks"},{"line_number":181,"context_line":"        my_re \u003d re.compile(\u0027\u003e\\n\\\\s+([^\u003c\u003e\\\\s].*?)\\n\\\\s+\u003c/\u0027, re.DOTALL)"},{"line_number":182,"context_line":"        my_string \u003d my_re.sub(r\u0027\u003e\\g\u003c1\u003e\u003c/\u0027, my_string)"},{"line_number":183,"context_line":"        return my_string"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_1b4eec6d","line":181,"in_reply_to":"5f7c97a3_646662be","updated":"2018-06-20 15:27:21.000000000","message":"please see my reponse in the pevious file.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"integration/tests/integration/tests/util/rpc.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                              shell\u003dFalse)"},{"line_number":55,"context_line":"            for line in iter(proc.stdout.readline, \"\"):"},{"line_number":56,"context_line":"                print(\"LIST QUEUES:\" + line)"},{"line_number":57,"context_line":"                m \u003d re.search(r\"\"\"%s\\s+([0-9]+)\"\"\" % queue_name, line)"},{"line_number":58,"context_line":"                if m:"},{"line_number":59,"context_line":"                    return int(m.group(1))"},{"line_number":60,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8baf347c","line":57,"range":{"start_line":57,"start_character":31,"end_line":57,"end_character":50},"updated":"2018-06-19 07:49:47.000000000","message":"(not related to this change, but we could also change in the same patch)It looks better to replace triple quotes to double ones to keep consistent with other quote usages.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                              shell\u003dFalse)"},{"line_number":55,"context_line":"            for line in iter(proc.stdout.readline, \"\"):"},{"line_number":56,"context_line":"                print(\"LIST QUEUES:\" + line)"},{"line_number":57,"context_line":"                m \u003d re.search(r\"\"\"%s\\s+([0-9]+)\"\"\" % queue_name, line)"},{"line_number":58,"context_line":"                if m:"},{"line_number":59,"context_line":"                    return int(m.group(1))"},{"line_number":60,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4419e61f","line":57,"range":{"start_line":57,"start_character":31,"end_line":57,"end_character":50},"in_reply_to":"5f7c97a3_8baf347c","updated":"2018-06-20 14:31:01.000000000","message":"will do","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"integration/tests/integration/tests/util/services.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        proc \u003d start_proc([\"/usr/bin/pmap\", \"-d\", str(pid)],"},{"line_number":121,"context_line":"                          shell\u003dFalse)"},{"line_number":122,"context_line":"        for line in iter(proc.stdout.readline, \"\"):"},{"line_number":123,"context_line":"            m \u003d re.search(r\"\"\"mapped\\:\\s([0-9]+)K\\s+\"\"\""},{"line_number":124,"context_line":"                          r\"\"\"writeable/private:\\s([0-9]+)K\\s+\"\"\""},{"line_number":125,"context_line":"                          r\"\"\"shared:\\s+([0-9]+)K\"\"\", line)"},{"line_number":126,"context_line":"            if m:"},{"line_number":127,"context_line":"                return MemoryInfo(int(m.group(1)), int(m.group(2)),"},{"line_number":128,"context_line":"                                  int(m.group(3)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0bc3243a","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":52},"updated":"2018-06-19 07:49:47.000000000","message":"Same here for triple quotes.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        proc \u003d start_proc([\"/usr/bin/pmap\", \"-d\", str(pid)],"},{"line_number":121,"context_line":"                          shell\u003dFalse)"},{"line_number":122,"context_line":"        for line in iter(proc.stdout.readline, \"\"):"},{"line_number":123,"context_line":"            m \u003d re.search(r\"\"\"mapped\\:\\s([0-9]+)K\\s+\"\"\""},{"line_number":124,"context_line":"                          r\"\"\"writeable/private:\\s([0-9]+)K\\s+\"\"\""},{"line_number":125,"context_line":"                          r\"\"\"shared:\\s+([0-9]+)K\"\"\", line)"},{"line_number":126,"context_line":"            if m:"},{"line_number":127,"context_line":"                return MemoryInfo(int(m.group(1)), int(m.group(2)),"},{"line_number":128,"context_line":"                                  int(m.group(3)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_641422ea","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":52},"in_reply_to":"5f7c97a3_0bc3243a","updated":"2018-06-20 14:31:01.000000000","message":"ok","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"tools/install_venv.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            print(\u0027Installing virtualenv via easy_install...\u0027),"},{"line_number":80,"context_line":"            if not (run_command([\u0027which\u0027, \u0027easy_install\u0027]) and"},{"line_number":81,"context_line":"                    run_command([\u0027easy_install\u0027, \u0027virtualenv\u0027])):"},{"line_number":82,"context_line":"                die(\u0027ERROR: virtualenv not found.\\n\\\\Trove development\u0027"},{"line_number":83,"context_line":"                    \u0027 requires virtualenv, please install it using your\u0027"},{"line_number":84,"context_line":"                    \u0027 favorite package management tool\u0027)"},{"line_number":85,"context_line":"            print(\u0027done.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_abe790e3","line":82,"range":{"start_line":82,"start_character":51,"end_line":82,"end_character":53},"updated":"2018-06-19 07:49:47.000000000","message":"Looks like \u0027\\\u0027 before \u0027Trove\u0027 is not needed, so we could just delete it.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            print(\u0027Installing virtualenv via easy_install...\u0027),"},{"line_number":80,"context_line":"            if not (run_command([\u0027which\u0027, \u0027easy_install\u0027]) and"},{"line_number":81,"context_line":"                    run_command([\u0027easy_install\u0027, \u0027virtualenv\u0027])):"},{"line_number":82,"context_line":"                die(\u0027ERROR: virtualenv not found.\\n\\\\Trove development\u0027"},{"line_number":83,"context_line":"                    \u0027 requires virtualenv, please install it using your\u0027"},{"line_number":84,"context_line":"                    \u0027 favorite package management tool\u0027)"},{"line_number":85,"context_line":"            print(\u0027done.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_84e4de0f","line":82,"range":{"start_line":82,"start_character":51,"end_line":82,"end_character":53},"in_reply_to":"5f7c97a3_abe790e3","updated":"2018-06-20 14:31:01.000000000","message":"done","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"tools/trove-pylint.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    def __init__(self):"},{"line_number":206,"context_line":"        self.config \u003d Config()"},{"line_number":207,"context_line":"        self.idline \u003d re.compile(\"^[*]* Module .*\")"},{"line_number":208,"context_line":"        self.detail \u003d re.compile(r\"(\\S+):(\\d+): \\[(\\S+)\\((\\S+)\\),\""},{"line_number":209,"context_line":"                                 r\"(\\S+)?] (.*)\")"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def dolint(self, filename):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6bf2d89d","line":208,"range":{"start_line":208,"start_character":65,"end_line":208,"end_character":66},"updated":"2018-06-19 07:49:47.000000000","message":"The space shouldn\u0027t be deleted here.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    def __init__(self):"},{"line_number":206,"context_line":"        self.config \u003d Config()"},{"line_number":207,"context_line":"        self.idline \u003d re.compile(\"^[*]* Module .*\")"},{"line_number":208,"context_line":"        self.detail \u003d re.compile(r\"(\\S+):(\\d+): \\[(\\S+)\\((\\S+)\\),\""},{"line_number":209,"context_line":"                                 r\"(\\S+)?] (.*)\")"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def dolint(self, filename):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_04ba0ee0","line":208,"range":{"start_line":208,"start_character":65,"end_line":208,"end_character":66},"in_reply_to":"5f7c97a3_6bf2d89d","updated":"2018-06-20 14:31:01.000000000","message":"Right. Thanks for catching this","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"trove/common/apischema.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \"type\": \"string\","},{"line_number":19,"context_line":"    \"minLength\": 8,"},{"line_number":20,"context_line":"    \"pattern\": r\u0027http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.\u0026+]|[!*\\(\\),]\u0027"},{"line_number":21,"context_line":"               \u0027|(?:%[0-9a-fA-F][0-9a-fA-F]))+\u0027"},{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"boolean_string \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2b6f0029","line":21,"range":{"start_line":21,"start_character":15,"end_line":21,"end_character":17},"updated":"2018-06-19 07:49:47.000000000","message":"The \u0027r\u0027 prefix is not necessary here, but may be good for furture changes(i.e. we could use a raw string for every splitted lines for regex pattern).","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    \"type\": \"string\","},{"line_number":19,"context_line":"    \"minLength\": 8,"},{"line_number":20,"context_line":"    \"pattern\": r\u0027http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.\u0026+]|[!*\\(\\),]\u0027"},{"line_number":21,"context_line":"               \u0027|(?:%[0-9a-fA-F][0-9a-fA-F]))+\u0027"},{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"boolean_string \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_64c2e255","line":21,"range":{"start_line":21,"start_character":15,"end_line":21,"end_character":17},"in_reply_to":"5f7c97a3_2b6f0029","updated":"2018-06-20 14:31:01.000000000","message":"OK. I\u0027ll add it here","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"trove/common/db/mysql/models.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":121,"context_line":"class MySQLUser(models.DatastoreUser):"},{"line_number":122,"context_line":"    \"\"\"Represents a MySQL User and its associated properties.\"\"\""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    not_supported_chars \u003d re.compile(\"^\\\\s|\\\\s$|\u0027|\\\"|;|`|,|/|\\\\\\\\\")"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _is_valid_string(self, value):"},{"line_number":127,"context_line":"        if (not value or"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0ba9e422","line":124,"range":{"start_line":124,"start_character":37,"end_line":124,"end_character":66},"updated":"2018-06-19 07:49:47.000000000","message":"This could also change to a raw string.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"9847098b9128fb1a7828f63065cbbed85aec39bf","unresolved":false,"context_lines":[{"line_number":121,"context_line":"class MySQLUser(models.DatastoreUser):"},{"line_number":122,"context_line":"    \"\"\"Represents a MySQL User and its associated properties.\"\"\""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    not_supported_chars \u003d re.compile(\"^\\\\s|\\\\s$|\u0027|\\\"|;|`|,|/|\\\\\\\\\")"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _is_valid_string(self, value):"},{"line_number":127,"context_line":"        if (not value or"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_780b662a","line":124,"range":{"start_line":124,"start_character":37,"end_line":124,"end_character":66},"in_reply_to":"5f7c97a3_04dbee20","updated":"2018-06-20 15:27:21.000000000","message":"Oh, right, then I think it\u0027s fine here. (I personally prefer a raw string, as it\u0027s more consistent, :))","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"class MySQLUser(models.DatastoreUser):"},{"line_number":122,"context_line":"    \"\"\"Represents a MySQL User and its associated properties.\"\"\""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    not_supported_chars \u003d re.compile(\"^\\\\s|\\\\s$|\u0027|\\\"|;|`|,|/|\\\\\\\\\")"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _is_valid_string(self, value):"},{"line_number":127,"context_line":"        if (not value or"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_04dbee20","line":124,"range":{"start_line":124,"start_character":37,"end_line":124,"end_character":66},"in_reply_to":"5f7c97a3_0ba9e422","updated":"2018-06-20 14:31:01.000000000","message":"Well yeah but then I would need to change the quotation type to triple \" because there are both \" and \u0027 inside this string","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"trove/guestagent/datastore/experimental/couchbase/system.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                          \u0027/etc/sysctl.conf\u0027)"},{"line_number":44,"context_line":"cmd_reset_pwd \u003d \u0027sudo /opt/couchbase/bin/cbreset_password %(IP)s:8091\u0027"},{"line_number":45,"context_line":"pwd_file \u003d COUCHBASE_CONF_DIR + SECRET_KEY"},{"line_number":46,"context_line":"cmd_get_password_from_config \u003d r\"\"\"sudo /opt/couchbase/bin/erl -noinput -eval \\"},{"line_number":47,"context_line":"\u0027case file:read_file(\"/opt/couchbase/var/lib/couchbase/config/config.dat\") \\"},{"line_number":48,"context_line":"of {ok, B} -\u003e io:format(\"~p~n\", [binary_to_term(B)]) end.\u0027 \\"},{"line_number":49,"context_line":"-run init stop | grep \u0027\\[{\"root\",\\[{password,\u0027 | awk -F\\\" \u0027{print $4}\u0027"},{"line_number":50,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8b8ad317","line":50,"range":{"start_line":46,"start_character":31,"end_line":50,"end_character":3},"updated":"2018-06-19 07:49:47.000000000","message":"-1:This shouldn\u0027t work. Triple quotes are used for a string spanning multiple lines, an back slash at the end of each will avoid line breaking, this could not work for raw strings.\n\nI think this multiple-line command is not necessary to change(do this line also produce warning?). Otherwise we could change to something like:\n\ncmd_get_password_from_config \u003d (r\u0027...\u0027\n                                r\u0027...\u0027\n                                r\"\"\"...\"\"\")\n\n(triple quotes are used to avoid single/double quotes escaping, which is not possible in raw strings).","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                          \u0027/etc/sysctl.conf\u0027)"},{"line_number":44,"context_line":"cmd_reset_pwd \u003d \u0027sudo /opt/couchbase/bin/cbreset_password %(IP)s:8091\u0027"},{"line_number":45,"context_line":"pwd_file \u003d COUCHBASE_CONF_DIR + SECRET_KEY"},{"line_number":46,"context_line":"cmd_get_password_from_config \u003d r\"\"\"sudo /opt/couchbase/bin/erl -noinput -eval \\"},{"line_number":47,"context_line":"\u0027case file:read_file(\"/opt/couchbase/var/lib/couchbase/config/config.dat\") \\"},{"line_number":48,"context_line":"of {ok, B} -\u003e io:format(\"~p~n\", [binary_to_term(B)]) end.\u0027 \\"},{"line_number":49,"context_line":"-run init stop | grep \u0027\\[{\"root\",\\[{password,\u0027 | awk -F\\\" \u0027{print $4}\u0027"},{"line_number":50,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_644182a6","line":50,"range":{"start_line":46,"start_character":31,"end_line":50,"end_character":3},"in_reply_to":"5f7c97a3_8b8ad317","updated":"2018-06-20 14:31:01.000000000","message":"right, didn\u0027t though about this.\nYes this line also generates a warning","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}],"trove/tests/fakes/guestagent.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"3e4565ce06afb8ca5667a7607ee49f6326d920e8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.version +\u003d 1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check_username(self, username):"},{"line_number":69,"context_line":"        unsupported_chars \u003d re.compile(\"^\\\\s|\\\\s$|\u0027|\\\"|;|`|,|/|\\\\\\\\\")"},{"line_number":70,"context_line":"        if (not username or"},{"line_number":71,"context_line":"                unsupported_chars.search(username) or"},{"line_number":72,"context_line":"                (\"%r\" % username).find(\"\\\\\") !\u003d -1):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_abd78fee","line":69,"range":{"start_line":69,"start_character":39,"end_line":69,"end_character":68},"updated":"2018-06-19 07:49:47.000000000","message":"Raw strings could also work?","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":27733,"name":"Krzysztof Opasiak","email":"k.opasiak@samsung.com","username":"kopasiak"},"change_message_id":"3349073cd445e922c4c952db5f07197888b2919a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.version +\u003d 1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check_username(self, username):"},{"line_number":69,"context_line":"        unsupported_chars \u003d re.compile(\"^\\\\s|\\\\s$|\u0027|\\\"|;|`|,|/|\\\\\\\\\")"},{"line_number":70,"context_line":"        if (not username or"},{"line_number":71,"context_line":"                unsupported_chars.search(username) or"},{"line_number":72,"context_line":"                (\"%r\" % username).find(\"\\\\\") !\u003d -1):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c459768e","line":69,"range":{"start_line":69,"start_character":39,"end_line":69,"end_character":68},"in_reply_to":"5f7c97a3_abd78fee","updated":"2018-06-20 14:31:01.000000000","message":"the same as previously. Yes it would work but then we need to change the quotes to \"\"\"","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"9847098b9128fb1a7828f63065cbbed85aec39bf","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.version +\u003d 1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check_username(self, username):"},{"line_number":69,"context_line":"        unsupported_chars \u003d re.compile(\"^\\\\s|\\\\s$|\u0027|\\\"|;|`|,|/|\\\\\\\\\")"},{"line_number":70,"context_line":"        if (not username or"},{"line_number":71,"context_line":"                unsupported_chars.search(username) or"},{"line_number":72,"context_line":"                (\"%r\" % username).find(\"\\\\\") !\u003d -1):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_db22b4a3","line":69,"range":{"start_line":69,"start_character":39,"end_line":69,"end_character":68},"in_reply_to":"5f7c97a3_c459768e","updated":"2018-06-20 15:27:21.000000000","message":"Yes, I ignored that before, and a reponse is added in the previous file.","commit_id":"692153e3eb2638151273c4ebcebee9ba59f55799"}]}
