)]}'
{"monasca_notification/plugins/email_notifier.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"0e95b746c9b6f39a7ba87c7fe7560acfa5a57b82","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Alarm \"{alarm_name}\" transitioned to the {state} state at {timestamp} UTC"},{"line_number":50,"context_line":"Alarm_id: {alarm_id}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Link to Grafana: {grafana_url}"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Lifecycle state: {lifecycle_state}"},{"line_number":55,"context_line":"Link: {link}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_5e8b201e","line":52,"updated":"2017-06-23 11:32:51.000000000","message":"Move that below Link: ...\n\nand same comment elsewhere.","commit_id":"732355be5690b1542255a3498590942d0b36d29a"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"0e95b746c9b6f39a7ba87c7fe7560acfa5a57b82","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        metric_query \u003d \u0027\u0027"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        try:"},{"line_number":240,"context_line":"            grafana_url \u003d self._config[\u0027grafana_url\u0027]"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"            url \u003d grafana_url + \\"},{"line_number":243,"context_line":"                \u0027/dashboard/script/drilldown.js\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_3e8e242e","line":240,"updated":"2017-06-23 11:32:51.000000000","message":"This should be optional as in  self._config.get(\u0027grafana_url\u0027, None)","commit_id":"732355be5690b1542255a3498590942d0b36d29a"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"09289c920a4dca3cd70d4384d9f21108dbf71c56","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        try:"},{"line_number":238,"context_line":"            grafana_url \u003d self._config.get(\u0027grafana_url\u0027, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            url \u003d grafana_url + \\"},{"line_number":241,"context_line":"                \u0027/dashboard/script/drilldown.js\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"            name \u003d metric[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_56d41648","line":240,"updated":"2017-07-26 21:29:45.000000000","message":"Shouldn\u0027t URL manipulation be handled with sth from urlib ?","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":25904,"name":"Georgia-Anna Farmaki","email":"georgia-anna.farmaki@est.fujitsu.com","username":"farmaki"},"change_message_id":"a1e861ae7278d208be52240c75020c0cfb0d4ecd","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        try:"},{"line_number":238,"context_line":"            grafana_url \u003d self._config.get(\u0027grafana_url\u0027, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            url \u003d grafana_url + \\"},{"line_number":241,"context_line":"                \u0027/dashboard/script/drilldown.js\u0027"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"            name \u003d metric[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_87f6b862","line":240,"in_reply_to":"ff346bd7_56d41648","updated":"2017-07-27 08:39:45.000000000","message":"Is it really necessary to do so?","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"cf49af2a7bee20f726ab46f34c9cf09f7c632f01","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"            metric_query \u003d \"?metric\u003d%s\" % name"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"            if six.PY2:"},{"line_number":249,"context_line":"                iterator \u003d dimensions.iteritems()"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                iterator \u003d dimensions.items()"},{"line_number":252,"context_line":"            for key, value in iterator:"},{"line_number":253,"context_line":"                metric_query +\u003d \"\u0026dim_%s\u003d%s\" % (key, value)"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_faec2f2a","line":251,"range":{"start_line":248,"start_character":0,"end_line":251,"end_character":45},"updated":"2017-07-26 06:02:03.000000000","message":"iterator \u003d dimensions.iteritems() if six.PY2 else dimensions.items()","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"002f798484e41f4cfdc6c2e27b5288f51a963581","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                iterator \u003d dimensions.iteritems()"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                iterator \u003d dimensions.items()"},{"line_number":252,"context_line":"            for key, value in iterator:"},{"line_number":253,"context_line":"                metric_query +\u003d \"\u0026dim_%s\u003d%s\" % (key, value)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            # Show the graph within a range of ten minutes before and after the alarm occurred."}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_06bc43b9","line":252,"range":{"start_line":252,"start_character":30,"end_line":252,"end_character":38},"updated":"2017-07-26 00:14:30.000000000","message":"Could this just be \"six.iteritems(dimensions)\"?","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"09289c920a4dca3cd70d4384d9f21108dbf71c56","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                iterator \u003d dimensions.iteritems()"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                iterator \u003d dimensions.items()"},{"line_number":252,"context_line":"            for key, value in iterator:"},{"line_number":253,"context_line":"                metric_query +\u003d \"\u0026dim_%s\u003d%s\" % (key, value)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            # Show the graph within a range of ten minutes before and after the alarm occurred."}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_d6dec66b","line":252,"range":{"start_line":252,"start_character":30,"end_line":252,"end_character":38},"in_reply_to":"ff346bd7_06bc43b9","updated":"2017-07-26 21:29:45.000000000","message":"As far as I remember, we\u0027ve been doing just dict.items() everywhere.","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":25904,"name":"Georgia-Anna Farmaki","email":"georgia-anna.farmaki@est.fujitsu.com","username":"farmaki"},"change_message_id":"a1e861ae7278d208be52240c75020c0cfb0d4ecd","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                iterator \u003d dimensions.iteritems()"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                iterator \u003d dimensions.items()"},{"line_number":252,"context_line":"            for key, value in iterator:"},{"line_number":253,"context_line":"                metric_query +\u003d \"\u0026dim_%s\u003d%s\" % (key, value)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            # Show the graph within a range of ten minutes before and after the alarm occurred."}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_07cf6856","line":252,"range":{"start_line":252,"start_character":30,"end_line":252,"end_character":38},"in_reply_to":"ff346bd7_99aab16e","updated":"2017-07-27 08:39:45.000000000","message":"So, either way is fine for me. Which one do you prefer? six.iteritems(dimensions) might have the benefit that it is more readable.","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"457008a7ec78f325d0d0c3933cfe3c13bcd23c11","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                iterator \u003d dimensions.iteritems()"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                iterator \u003d dimensions.items()"},{"line_number":252,"context_line":"            for key, value in iterator:"},{"line_number":253,"context_line":"                metric_query +\u003d \"\u0026dim_%s\u003d%s\" % (key, value)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            # Show the graph within a range of ten minutes before and after the alarm occurred."}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_99aab16e","line":252,"range":{"start_line":252,"start_character":30,"end_line":252,"end_character":38},"in_reply_to":"ff346bd7_d6dec66b","updated":"2017-07-26 22:14:02.000000000","message":"That should be fine.  It does create a copy of the data, and the size of dimensions isn\u0027t necessarily bounded, but realistically it shouldn\u0027t be large enough to cause a problem.","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"cf49af2a7bee20f726ab46f34c9cf09f7c632f01","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            time_query \u003d \"\u0026from\u003d%s\u0026to\u003d%s\" % (from_ms, to_ms)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            return url + metric_query + time_query"},{"line_number":262,"context_line":"        except KeyError:"},{"line_number":263,"context_line":"            return None"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_fa630fb0","line":262,"range":{"start_line":262,"start_character":8,"end_line":262,"end_character":24},"updated":"2017-07-26 06:02:03.000000000","message":"Which point are you expecting to occur KeyError?  I think it\u0027s better to choose suitable area for \u0027try...except\u0027.","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":25904,"name":"Georgia-Anna Farmaki","email":"georgia-anna.farmaki@est.fujitsu.com","username":"farmaki"},"change_message_id":"a1e861ae7278d208be52240c75020c0cfb0d4ecd","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            time_query \u003d \"\u0026from\u003d%s\u0026to\u003d%s\" % (from_ms, to_ms)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"            return url + metric_query + time_query"},{"line_number":262,"context_line":"        except KeyError:"},{"line_number":263,"context_line":"            return None"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_922ef88f","line":262,"range":{"start_line":262,"start_character":8,"end_line":262,"end_character":24},"in_reply_to":"ff346bd7_fa630fb0","updated":"2017-07-27 08:39:45.000000000","message":"You are right, it does not occur anymore since I replaced grafana_url \u003d self._config[\u0027grafana_url\u0027] with providing the None fallback value in: grafana_url \u003d self._config.get(\u0027grafana_url\u0027, None). I will return None instead.","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"a27eca0eaf4d7b981ed48c2390476e2393d63277","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        return msg"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    # Returns the url to the Grafana host, including a query with the"},{"line_number":232,"context_line":"    # respective metric info (name, dimensions, timestamp)"},{"line_number":233,"context_line":"    def _get_link_url(self, metric, timestamp_ms):"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        grafana_url \u003d self._config.get(\u0027grafana_url\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df3967d1_283d842a","line":232,"range":{"start_line":231,"start_character":3,"end_line":232,"end_character":58},"updated":"2017-08-04 08:46:03.000000000","message":"How about writing docstring?","commit_id":"194320b719518981a1c5ac9783d69fc7bb003b89"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"a27eca0eaf4d7b981ed48c2390476e2393d63277","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        metric_query \u003d \u0027\u0027"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        url \u003d grafana_url + \\"},{"line_number":243,"context_line":"            \u0027/dashboard/script/drilldown.js\u0027"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        name \u003d metric[\u0027name\u0027]"},{"line_number":246,"context_line":"        dimensions \u003d metric[\u0027dimensions\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"df3967d1_0819a020","line":243,"range":{"start_line":243,"start_character":12,"end_line":243,"end_character":44},"updated":"2017-08-04 08:46:03.000000000","message":"I think it\u0027s OK to write 1 line and please move it #257.","commit_id":"194320b719518981a1c5ac9783d69fc7bb003b89"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"a27eca0eaf4d7b981ed48c2390476e2393d63277","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        url \u003d grafana_url + \\"},{"line_number":243,"context_line":"            \u0027/dashboard/script/drilldown.js\u0027"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        name \u003d metric[\u0027name\u0027]"},{"line_number":246,"context_line":"        dimensions \u003d metric[\u0027dimensions\u0027]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        metric_query \u003d \"?metric\u003d%s\" % name"}],"source_content_type":"text/x-python","patch_set":10,"id":"df3967d1_a8c29457","line":245,"range":{"start_line":245,"start_character":8,"end_line":245,"end_character":29},"updated":"2017-08-04 08:46:03.000000000","message":"This argument is only used at #248 and #248 is not so long description.  No need to define it.","commit_id":"194320b719518981a1c5ac9783d69fc7bb003b89"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"a27eca0eaf4d7b981ed48c2390476e2393d63277","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        name \u003d metric[\u0027name\u0027]"},{"line_number":246,"context_line":"        dimensions \u003d metric[\u0027dimensions\u0027]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        metric_query \u003d \"?metric\u003d%s\" % name"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        for key, value in six.iteritems(dimensions):"},{"line_number":251,"context_line":"            metric_query +\u003d \"\u0026dim_%s\u003d%s\" % (key, value)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df3967d1_4896884e","line":248,"range":{"start_line":248,"start_character":7,"end_line":248,"end_character":42},"updated":"2017-08-04 08:46:03.000000000","message":"metric_query \u003d \"metric\u003d%s\" % metric[\u0027name\u0027]","commit_id":"194320b719518981a1c5ac9783d69fc7bb003b89"}],"notification.yaml":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"0e95b746c9b6f39a7ba87c7fe7560acfa5a57b82","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        password:"},{"line_number":45,"context_line":"        timeout: 60"},{"line_number":46,"context_line":"        from_addr: monasca-notification@none.invalid"},{"line_number":47,"context_line":"        grafana_url: \u0027http://127.0.0.1:3000\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    webhook:"},{"line_number":50,"context_line":"        timeout: 5"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5f201791_3ea504b6","line":47,"updated":"2017-06-23 11:32:51.000000000","message":"I believe it should be optional.","commit_id":"732355be5690b1542255a3498590942d0b36d29a"}],"tests/test_email_notification.py":[{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"f112bef3b491f83ef20535966c722affd0e72543","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            iterator \u003d result_parsed_query.iterkeys()"},{"line_number":522,"context_line":"        else:"},{"line_number":523,"context_line":"            iterator \u003d result_parsed_query.keys()"},{"line_number":524,"context_line":"        for key in iterator:"},{"line_number":525,"context_line":"            self.assertEqual(expected_parsed_query[key], result_parsed_query[key])"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff346bd7_542f92a0","line":524,"range":{"start_line":524,"start_character":8,"end_line":524,"end_character":28},"updated":"2017-07-26 05:02:10.000000000","message":"You can use six.iterkeys() here","commit_id":"99564aeb9fb1c945d1767eb8a4a03aba4491bca2"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"30ddaf6105413e4d61b2babff8e517064a192745","unresolved":false,"context_lines":[{"line_number":453,"context_line":"    def test_get_link_url(self, mock_smtp):"},{"line_number":454,"context_line":"        # Given one metric with name and dimensions"},{"line_number":455,"context_line":"        metrics \u003d []"},{"line_number":456,"context_line":"        metric \u003d {\u0027name\u0027: \u0027cpu.percent\u0027, \u0027dimensions\u0027: {\u0027hostname\u0027: \u0027foo1\u0027, \u0027service\u0027: \u0027bar1\u0027}}"},{"line_number":457,"context_line":"        metrics.append(metric)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        mock_log \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_6c7e776c","line":456,"range":{"start_line":456,"start_character":0,"end_line":456,"end_character":95},"updated":"2017-08-24 07:06:28.000000000","message":"It would be more readable if you could split it around 79 character.","commit_id":"b5ac57ca7be565e546d605893b677e7b56de5542"},{"author":{"_account_id":25904,"name":"Georgia-Anna Farmaki","email":"georgia-anna.farmaki@est.fujitsu.com","username":"farmaki"},"change_message_id":"af9d82215a6876326cc6f4f73f7fe477983255c3","unresolved":false,"context_lines":[{"line_number":453,"context_line":"    def test_get_link_url(self, mock_smtp):"},{"line_number":454,"context_line":"        # Given one metric with name and dimensions"},{"line_number":455,"context_line":"        metrics \u003d []"},{"line_number":456,"context_line":"        metric \u003d {\u0027name\u0027: \u0027cpu.percent\u0027, \u0027dimensions\u0027: {\u0027hostname\u0027: \u0027foo1\u0027, \u0027service\u0027: \u0027bar1\u0027}}"},{"line_number":457,"context_line":"        metrics.append(metric)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        mock_log \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_1b1b59d0","line":456,"range":{"start_line":456,"start_character":0,"end_line":456,"end_character":95},"in_reply_to":"7f287b81_6c7e776c","updated":"2017-08-28 09:34:01.000000000","message":"Done","commit_id":"b5ac57ca7be565e546d605893b677e7b56de5542"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"30ddaf6105413e4d61b2babff8e517064a192745","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        result_url \u003d email._get_link_url(metrics[0], alarm_ms)"},{"line_number":481,"context_line":"        self.assertIsNotNone(result_url)"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"        # Then the following link to Grafana (including the metric info and timestamp) is expected."},{"line_number":484,"context_line":"        expected_url \u003d \"http://127.0.0.1:3000/dashboard/script/drilldown.js?metric\u003dcpu.percent\" \\"},{"line_number":485,"context_line":"                       \"\u0026dim_hostname\u003dfoo1\u0026dim_service\u003dbar1\u0026from\u003d%s\u0026to\u003d%s\" % (expected_from_ms, expected_to_ms)"},{"line_number":486,"context_line":"        self._assert_equal_urls(expected_url, result_url)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def create_time_data(self, alarm_date):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_8c876362","line":485,"range":{"start_line":483,"start_character":1,"end_line":485,"end_character":111},"updated":"2017-08-24 07:06:28.000000000","message":"It would be more readable if you could split it around 79 character.","commit_id":"b5ac57ca7be565e546d605893b677e7b56de5542"},{"author":{"_account_id":25904,"name":"Georgia-Anna Farmaki","email":"georgia-anna.farmaki@est.fujitsu.com","username":"farmaki"},"change_message_id":"af9d82215a6876326cc6f4f73f7fe477983255c3","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        result_url \u003d email._get_link_url(metrics[0], alarm_ms)"},{"line_number":481,"context_line":"        self.assertIsNotNone(result_url)"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"        # Then the following link to Grafana (including the metric info and timestamp) is expected."},{"line_number":484,"context_line":"        expected_url \u003d \"http://127.0.0.1:3000/dashboard/script/drilldown.js?metric\u003dcpu.percent\" \\"},{"line_number":485,"context_line":"                       \"\u0026dim_hostname\u003dfoo1\u0026dim_service\u003dbar1\u0026from\u003d%s\u0026to\u003d%s\" % (expected_from_ms, expected_to_ms)"},{"line_number":486,"context_line":"        self._assert_equal_urls(expected_url, result_url)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def create_time_data(self, alarm_date):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_db1031ab","line":485,"range":{"start_line":483,"start_character":1,"end_line":485,"end_character":111},"in_reply_to":"7f287b81_8c876362","updated":"2017-08-28 09:34:01.000000000","message":"Done","commit_id":"b5ac57ca7be565e546d605893b677e7b56de5542"}]}
