)]}'
{"keystone/tests/matchers.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"b5640ab5f0bc5b68309cb851cbf88b0b600fe5a3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            dom.getroottree().write_c14n(fp)"},{"line_number":41,"context_line":"            s \u003d fp.getvalue()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            dom \u003d etree.fromstring(s, parser)"},{"line_number":44,"context_line":"            return etree.tostring(dom, pretty_print\u003dTrue).decode(\u0027utf-8\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        expected \u003d canonical_xml(self.expected)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_2771c1de","line":43,"updated":"2014-07-17 04:50:09.000000000","message":"Parsing XML into a Document Object Model.  I did this 16 years ago!  Great to see this still in use! This brings back memories... :-)","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f461037ffca578217c3d42a0f74360391a58bad0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            dom.getroottree().write_c14n(fp)"},{"line_number":41,"context_line":"            s \u003d fp.getvalue()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            dom \u003d etree.fromstring(s, parser)"},{"line_number":44,"context_line":"            return etree.tostring(dom, pretty_print\u003dTrue).decode(\u0027utf-8\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        expected \u003d canonical_xml(self.expected)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c144661b","line":43,"in_reply_to":"baada198_2771c1de","updated":"2014-07-17 10:46:18.000000000","message":"Unfortunately my memories of XML are not so great..","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"b5640ab5f0bc5b68309cb851cbf88b0b600fe5a3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            s \u003d fp.getvalue()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            dom \u003d etree.fromstring(s, parser)"},{"line_number":44,"context_line":"            return etree.tostring(dom, pretty_print\u003dTrue).decode(\u0027utf-8\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        expected \u003d canonical_xml(self.expected)"},{"line_number":47,"context_line":"        other \u003d canonical_xml(other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_47fb1547","line":44,"updated":"2014-07-17 04:50:09.000000000","message":"You know to decode using utf-8 because the XML byte string examples have the encoding attribute set to encoding\u003d\"UTF-8\" like the following:\n\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n\nIs my logic is correct or was there some other way to know to use utf-8 to decode?","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1314e061e9d00dee47430f6f5b7b9c8615ff83e9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            s \u003d fp.getvalue()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            dom \u003d etree.fromstring(s, parser)"},{"line_number":44,"context_line":"            return etree.tostring(dom, pretty_print\u003dTrue).decode(\u0027utf-8\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        expected \u003d canonical_xml(self.expected)"},{"line_number":47,"context_line":"        other \u003d canonical_xml(other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_942e55aa","line":44,"in_reply_to":"baada198_1975f231","updated":"2014-07-22 20:26:09.000000000","message":"This works fine because the content of our XML documents is ASCII and I think that it the encoding that lxml uses when none in specified. This is probably a good change to make to future proof this code so I\u0027ll put something in another patch so that I don\u0027t hold up this patchset anymore.","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f461037ffca578217c3d42a0f74360391a58bad0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            s \u003d fp.getvalue()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            dom \u003d etree.fromstring(s, parser)"},{"line_number":44,"context_line":"            return etree.tostring(dom, pretty_print\u003dTrue).decode(\u0027utf-8\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        expected \u003d canonical_xml(self.expected)"},{"line_number":47,"context_line":"        other \u003d canonical_xml(other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c1662655","line":44,"in_reply_to":"baada198_47fb1547","updated":"2014-07-17 10:46:18.000000000","message":"Basically yes.","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"8e1100f441f79fb5184aee3d0a484ec8ce6d314c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            s \u003d fp.getvalue()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            dom \u003d etree.fromstring(s, parser)"},{"line_number":44,"context_line":"            return etree.tostring(dom, pretty_print\u003dTrue).decode(\u0027utf-8\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        expected \u003d canonical_xml(self.expected)"},{"line_number":47,"context_line":"        other \u003d canonical_xml(other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1975f231","line":44,"in_reply_to":"baada198_c1662655","updated":"2014-07-17 11:55:47.000000000","message":"I think you should specify encoding\u003d\u0027utf-8\u0027 in arguments to be sure to decode proper utf-8. Or you can pass encoding\u003d\u0027unicode\u0027 and let lxml make unicode/str object for you.","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"}],"keystone/tests/test_exception.py":[{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"8e1100f441f79fb5184aee3d0a484ec8ce6d314c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        e \u003d exception.ValidationError(attribute\u003d\u0027xx\u0027,"},{"line_number":90,"context_line":"                                      target\u003d\u0027Long \\xe2\\x80\\x93 Dash\u0027)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        self.assertIn(u\u0027\\u2013\u0027, six.text_type(e))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_invalid_unicode_string(self):"},{"line_number":95,"context_line":"        # NOTE(jamielennox): This is a complete failure case so what is"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_b99b2665","line":92,"range":{"start_line":92,"start_character":33,"end_line":92,"end_character":49},"updated":"2014-07-17 11:55:47.000000000","message":"Why not e.args[0]?","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1314e061e9d00dee47430f6f5b7b9c8615ff83e9","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        e \u003d exception.ValidationError(attribute\u003d\u0027xx\u0027,"},{"line_number":90,"context_line":"                                      target\u003d\u0027Long \\xe2\\x80\\x93 Dash\u0027)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        self.assertIn(u\u0027\\u2013\u0027, six.text_type(e))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_invalid_unicode_string(self):"},{"line_number":95,"context_line":"        # NOTE(jamielennox): This is a complete failure case so what is"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_63954d87","line":92,"in_reply_to":"baada198_b99b2665","updated":"2014-07-22 20:26:09.000000000","message":"The string representation of an exception seems cleaner to me.","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"8e1100f441f79fb5184aee3d0a484ec8ce6d314c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # as there is an error with a message"},{"line_number":98,"context_line":"        e \u003d exception.ValidationError(attribute\u003d\u0027xx\u0027,"},{"line_number":99,"context_line":"                                      target\u003d\u0027\\xe7a va\u0027)"},{"line_number":100,"context_line":"        self.assertIn(\u0027%(attribute)\u0027, six.text_type(e))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class UnexpectedExceptionTestCase(ExceptionTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_d9a1ba96","line":100,"range":{"start_line":100,"start_character":38,"end_line":100,"end_character":54},"updated":"2014-07-17 11:55:47.000000000","message":"ditto","commit_id":"2f53ae672ded0c47fa7baee588ad7041e76b5883"}]}
