)]}'
{"nova/test.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7175eeed94555a24036201d5d75b6fdb49d4cb5f","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            error.difference \u003d difference"},{"line_number":587,"context_line":"            raise error"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"    def assertXmlEqual(self, expected, observed, **options):"},{"line_number":590,"context_line":"        self.assertThat(observed, matchers.XMLMatches(expected, **options))"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"    def assertPublicAPISignatures(self, baseinst, inst):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_8772d248","line":589,"range":{"start_line":589,"start_character":49,"end_line":589,"end_character":60},"updated":"2019-08-09 13:19:41.000000000","message":"Any chance we could just encode the three parameters instead?","commit_id":"e208c9bf20559baf1767b04a730250255c9cf765"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"0f0056f67c1520cde720742eed8e359eb1d86014","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            error.difference \u003d difference"},{"line_number":587,"context_line":"            raise error"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"    def assertXmlEqual(self, expected, observed, **options):"},{"line_number":590,"context_line":"        self.assertThat(observed, matchers.XMLMatches(expected, **options))"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"    def assertPublicAPISignatures(self, baseinst, inst):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_b225ce0c","line":589,"range":{"start_line":589,"start_character":49,"end_line":589,"end_character":60},"in_reply_to":"7faddb67_8772d248","updated":"2019-08-09 14:19:21.000000000","message":"That seems slightly worse to me.  I assume you\u0027re not proposing to make them positional *and* mandatory, since then callers would have to write horrible stuff like:\n\n    self.assertXmlEqual(expected, observed, False, False, False)\n\nI expect you\u0027re suggesting they\u0027d be positional and optional, in which case callers would have to write\n\n    self.assertXmlEqual(expected, observed, some_option\u003dTrue)\n\nwhich is exactly what the **options way already supports.  But the **options way avoids violating DRY since options can be added just by adding them to XMLMatches, without having to duplicate them here as well.  It also avoids a bulky parameter list which could grow even longer in the future.\n\nOTOH, making them optional parameters provides validation against typos in the option names, but that could equally be achieved with checks in XMLMatches if we were really worried about it.\n\nSwings and roundabouts, I guess ...","commit_id":"e208c9bf20559baf1767b04a730250255c9cf765"}]}
