)]}'
{"tests/test_titles.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"04e3996f4fabc9af1adc64f0dc70574c4c4dc9ff","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def _check_titles(self, filename, expect, allowed, actual):"},{"line_number":64,"context_line":"        missing_sections \u003d [x for x in expect.keys() if x not in actual.keys()]"},{"line_number":65,"context_line":"        extra_sections \u003d [x for x in actual.keys() if x not in"},{"line_number":66,"context_line":"                dict(list(expect.items()) + list(allowed.items()))]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        msgs \u003d []"},{"line_number":69,"context_line":"        if len(missing_sections) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_005ad581","line":66,"updated":"2018-03-13 15:13:38.000000000","message":"Not sure why this is using items(). This all seems better using \u0027sets.\n\nHow about this?\n\n missing_sections \u003d set(expect) - set(actual)\n extra_sections \u003d set(expect).union(allowed) -  set(actual)","commit_id":"d97d39a0efc5f173368c454884889c401b0a336b"},{"author":{"_account_id":27153,"name":"Nguyen Hai","email":"nguyentrihai93@gmail.com","username":"nguyentrihai"},"change_message_id":"e6bebc0400a9c80a257029b39dffd5e3c8625ace","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def _check_titles(self, filename, expect, allowed, actual):"},{"line_number":64,"context_line":"        missing_sections \u003d [x for x in expect.keys() if x not in actual.keys()]"},{"line_number":65,"context_line":"        extra_sections \u003d [x for x in actual.keys() if x not in"},{"line_number":66,"context_line":"                dict(list(expect.items()) + list(allowed.items()))]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        msgs \u003d []"},{"line_number":69,"context_line":"        if len(missing_sections) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_e3a1eb95","line":66,"in_reply_to":"df7087c5_005ad581","updated":"2018-03-13 15:47:36.000000000","message":"LGTM","commit_id":"d97d39a0efc5f173368c454884889c401b0a336b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3764bb0211047cc3dda5084b7fd2a4d3d78aa0cb","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _check_titles(self, filename, expect, allowed, actual):"},{"line_number":64,"context_line":"        missing_sections \u003d set(expect) - set(actual)"},{"line_number":65,"context_line":"        extra_sections \u003d set(expect).union(allowed) -  set(actual)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        msgs \u003d []"},{"line_number":68,"context_line":"        if len(missing_sections) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_e86a1fb1","line":65,"updated":"2018-03-13 20:44:05.000000000","message":"Aren\u0027t the extra sections the ones that are in actual BUT not in (expect or allowed) ? This looks reversed.","commit_id":"7eb7592ff2b9c2d38c54fa7a27423c8791e5f663"},{"author":{"_account_id":27153,"name":"Nguyen Hai","email":"nguyentrihai93@gmail.com","username":"nguyentrihai"},"change_message_id":"d0cf9e3be15a32b56c4010cbc8a002adf69c24c0","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _check_titles(self, filename, expect, allowed, actual):"},{"line_number":64,"context_line":"        missing_sections \u003d set(expect) - set(actual)"},{"line_number":65,"context_line":"        extra_sections \u003d set(expect).union(allowed) -  set(actual)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        msgs \u003d []"},{"line_number":68,"context_line":"        if len(missing_sections) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_bde9a2e6","line":65,"in_reply_to":"df7087c5_e86a1fb1","updated":"2018-03-15 06:30:27.000000000","message":"Done","commit_id":"7eb7592ff2b9c2d38c54fa7a27423c8791e5f663"}]}
