)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2afeb2f3165ebf63cd8914f84bf729ffc522f17e","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Add test cases to cover these scenarios."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Since comparison of XML trees is a generic task, in the future most"},{"line_number":73,"context_line":"likely it would make sense to remove this code from nova, and use"},{"line_number":74,"context_line":"an upstream alternative such as xmldiff:"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    https://xmldiff.readthedocs.io/en/stable/"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Change-Id: I2dc912d4e3059ab86d414937223f766a1b893900"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_cfffbd33","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":45},"updated":"2019-03-01 20:11:03.000000000","message":"Amen.","commit_id":"ffd81eb107dd04d05f828e9e049320412c576e1b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d6bf459a74485876c48c883a419fedf99fd3e08f","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Add test cases to cover these scenarios."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Since comparison of XML trees is a generic task, in the future most"},{"line_number":73,"context_line":"likely it would make sense to remove this code from nova, and use"},{"line_number":74,"context_line":"an upstream alternative such as xmldiff:"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    https://xmldiff.readthedocs.io/en/stable/"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Change-Id: I2dc912d4e3059ab86d414937223f766a1b893900"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_928ebacf","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":45},"in_reply_to":"9fdfeff1_cfffbd33","updated":"2019-03-01 21:03:07.000000000","message":"++, that\u0027s what I thought as I reviewed https://review.openstack.org/637965","commit_id":"ffd81eb107dd04d05f828e9e049320412c576e1b"}],"nova/tests/unit/matchers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2afeb2f3165ebf63cd8914f84bf729ffc522f17e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    def node(self, tag, idx):"},{"line_number":382,"context_line":"        \"\"\"Returns a new state based on the current one, with tag and idx"},{"line_number":383,"context_line":"        appended to the path.  We avoid appending in place and popping"},{"line_number":384,"context_line":"        on exit from the context of the comparison at this level in"},{"line_number":385,"context_line":"        the XML tree, because this would mutate state objects embedded"},{"line_number":386,"context_line":"        in XMLMismatch objects which are bubbled up through recursive"},{"line_number":387,"context_line":"        calls to _compare_nodes.  This would result in a misleading"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_2fa0c942","line":384,"range":{"start_line":384,"start_character":8,"end_line":384,"end_character":32},"updated":"2019-03-01 20:11:03.000000000","message":"Since you removed __enter__ and __exit__ is this still used as a context manager though?","commit_id":"ffd81eb107dd04d05f828e9e049320412c576e1b"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"065753c161c57d0c0f487acb6a629db9b02e805e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    def node(self, tag, idx):"},{"line_number":382,"context_line":"        \"\"\"Returns a new state based on the current one, with tag and idx"},{"line_number":383,"context_line":"        appended to the path.  We avoid appending in place and popping"},{"line_number":384,"context_line":"        on exit from the context of the comparison at this level in"},{"line_number":385,"context_line":"        the XML tree, because this would mutate state objects embedded"},{"line_number":386,"context_line":"        in XMLMismatch objects which are bubbled up through recursive"},{"line_number":387,"context_line":"        calls to _compare_nodes.  This would result in a misleading"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_52493264","line":384,"range":{"start_line":384,"start_character":8,"end_line":384,"end_character":32},"in_reply_to":"9fdfeff1_2fa0c942","updated":"2019-03-01 20:23:37.000000000","message":"Not any more - there was no advantage to it over passing XMLMatchState objects down the stack.  In this context (ahem), I used the word \"context\" in a more generic way rather than referring to Python context managers.  Sorry, that probably wasn\u0027t clear.","commit_id":"ffd81eb107dd04d05f828e9e049320412c576e1b"}]}
