)]}'
{"keystone/common/serializer.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"db10497f5fe5ced04b4ab4da83574e47044c54fc","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def _find_and_remove_links_from_root(self, dom, namespace):"},{"line_number":81,"context_line":"        \"\"\"Special-case links element"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        If \"links\" is in the elements, convert it and remove it from root"},{"line_number":84,"context_line":"        element. \"links\" will be placed back into the root of the converted"},{"line_number":85,"context_line":"        JSON object."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2FwuE%3D","line":83,"updated":"2013-03-13 15:57:20.000000000","message":"Although I think we have this right here, I think the API doc is inconsistent and some of the examples user \"link\" rather than \"links\"","commit_id":"ce87fda66bbbdeed2dfa124cda480dc29e1ca02a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"ca6ad0ecb56c3a1ea8aec2cb58d37758fd678304","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def _find_and_remove_links_from_root(self, dom, namespace):"},{"line_number":81,"context_line":"        \"\"\"Special-case links element"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        If \"links\" is in the elements, convert it and remove it from root"},{"line_number":84,"context_line":"        element. \"links\" will be placed back into the root of the converted"},{"line_number":85,"context_line":"        JSON object."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2FwWM%3D","line":83,"in_reply_to":"AAAAN3%2F%2FweU%3D","updated":"2013-03-13 18:08:57.000000000","message":"I will add tests for \"links\" inside an element and inside a collection.","commit_id":"ce87fda66bbbdeed2dfa124cda480dc29e1ca02a"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"187eb4b8b4ada4b8c92e42093ffe394386ddb695","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def _find_and_remove_links_from_root(self, dom, namespace):"},{"line_number":81,"context_line":"        \"\"\"Special-case links element"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        If \"links\" is in the elements, convert it and remove it from root"},{"line_number":84,"context_line":"        element. \"links\" will be placed back into the root of the converted"},{"line_number":85,"context_line":"        JSON object."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2FweU%3D","line":83,"in_reply_to":"AAAAN3%2F%2Fwfc%3D","updated":"2013-03-13 16:59:26.000000000","message":"Turns out there were lots of bad examples :P fixed in https://review.openstack.org/#/c/24338/","commit_id":"ce87fda66bbbdeed2dfa124cda480dc29e1ca02a"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9198b8d951de6788b4709f2551d925c9f89c4507","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def _find_and_remove_links_from_root(self, dom, namespace):"},{"line_number":81,"context_line":"        \"\"\"Special-case links element"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        If \"links\" is in the elements, convert it and remove it from root"},{"line_number":84,"context_line":"        element. \"links\" will be placed back into the root of the converted"},{"line_number":85,"context_line":"        JSON object."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2Fwfc%3D","line":83,"in_reply_to":"AAAAN3%2F%2FwuE%3D","updated":"2013-03-13 16:51:22.000000000","message":"It should be \"links\" -- I\u0027ll revise the API doc if there\u0027s any bad examples remaining","commit_id":"ce87fda66bbbdeed2dfa124cda480dc29e1ca02a"}],"tests/test_serializer.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5eaa79cafa24fd77267a0d06bc8a0525a59522fc","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            \u003cobjects xmlns\u003d\"http://docs.openstack.org/identity/api/v2.0\"\u003e"},{"line_number":196,"context_line":"                \u003cobject attribute\u003d\"value1\"/\u003e"},{"line_number":197,"context_line":"                \u003cobject attribute\u003d\"value2\"/\u003e"},{"line_number":198,"context_line":"                \u003clinks self\u003d\"http://localhost:5000/v3/objects\"/\u003e"},{"line_number":199,"context_line":"            \u003c/objects\u003e"},{"line_number":200,"context_line":"        \"\"\""},{"line_number":201,"context_line":"        self.assertEqualIgnoreWhitespace("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2Fwd0%3D","line":198,"updated":"2013-03-13 17:03:45.000000000","message":"Would prefer the structure illustrated in the bug as it\u0027s a bit more XML\u0027y... with a \"next\" link as well the output would be something like:\n\n  \u003clink rel\u003d\"self\" href\u003d\"http://identity:5000/v3/objects\" /\u003e\n  \u003clink rel\u003d\"next\" href\u003d\"http://identity:5000/v3/objects?page\u003d2\" /\u003e\n\nThose could also be in a parent \u003clinks\u003e\u003c/links\u003e element -- not sure if that\u0027s desired though?","commit_id":"ce87fda66bbbdeed2dfa124cda480dc29e1ca02a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"ca6ad0ecb56c3a1ea8aec2cb58d37758fd678304","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            \u003cobjects xmlns\u003d\"http://docs.openstack.org/identity/api/v2.0\"\u003e"},{"line_number":196,"context_line":"                \u003cobject attribute\u003d\"value1\"/\u003e"},{"line_number":197,"context_line":"                \u003cobject attribute\u003d\"value2\"/\u003e"},{"line_number":198,"context_line":"                \u003clinks self\u003d\"http://localhost:5000/v3/objects\"/\u003e"},{"line_number":199,"context_line":"            \u003c/objects\u003e"},{"line_number":200,"context_line":"        \"\"\""},{"line_number":201,"context_line":"        self.assertEqualIgnoreWhitespace("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2FwWc%3D","line":198,"in_reply_to":"AAAAN3%2F%2Fwd0%3D","updated":"2013-03-13 18:08:57.000000000","message":"k, will add it","commit_id":"ce87fda66bbbdeed2dfa124cda480dc29e1ca02a"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"06d8ece6c53f13a438b70b683242e12756063392","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            \"links\": {"},{"line_number":184,"context_line":"                \"next\": \"http://localhost:5000/v3/objects?page\u003d3\","},{"line_number":185,"context_line":"                \"previous\": \"http://localhost:5000/v3/objects?page\u003d1\","},{"line_number":186,"context_line":"                \"self\": \"http://localhost:5000/v3/objects\""},{"line_number":187,"context_line":"            },"},{"line_number":188,"context_line":"            \"objects\": [{"},{"line_number":189,"context_line":"                \"attribute\": \"value1\","}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAN3%2F%2FwPU%3D","line":186,"updated":"2013-03-13 19:02:25.000000000","message":"preferred the test coverage of the previous patch where at least one of these is null, which would be common","commit_id":"af44a4b3b86046260a8a8361f8a826a32e2c3934"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"06d8ece6c53f13a438b70b683242e12756063392","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                \u003c/object\u003e"},{"line_number":208,"context_line":"                \u003clinks self\u003d\"http://localhost:5000/v3/objects\""},{"line_number":209,"context_line":"                       next\u003d\"http://localhost:5000/v3/objects?page\u003d3\""},{"line_number":210,"context_line":"                       previous\u003d\"http://localhost:5000/v3/objects?page\u003d1\"/\u003e"},{"line_number":211,"context_line":"            \u003c/objects\u003e"},{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        self.assertEqualIgnoreWhitespace("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAN3%2F%2FwPY%3D","line":210,"updated":"2013-03-13 19:02:25.000000000","message":"i really don\u0027t think this is a common approach for xml; i would expect this to be rendered as:\n\n  \u003clinks\u003e\n    \u003clink rel\u003d\"self\" href\u003d\"http://localhost:5000/v3/objects\" /\u003e\n    \u003clink rel\u003d\"next\" href\u003d\"http://localhost:5000/v3/objects?page\u003d3\" /\u003e\n    \u003clink rel\u003d\"previous\" href\u003d\"http://localhost:5000/v3/objects?page\u003d1\" /\u003e\n  \u003c/links\u003e\n\nwith or without the outer \u003clinks\u003e container","commit_id":"af44a4b3b86046260a8a8361f8a826a32e2c3934"}]}
