)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8d90e4ef428775d16d04c94dfd4904281c3835af","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It is optional for resources to send in request\u0027s body attributes"},{"line_number":10,"context_line":"which aren\u0027t included in mapping."},{"line_number":11,"context_line":"This is needed for Neutron to allow sending extra arguments in"},{"line_number":12,"context_line":"POST/PUT requests to Neutron."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"If that will be possible in SDK and OSC, Neutron team should be finally"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"42dac167_9ae21a1b","line":11,"range":{"start_line":11,"start_character":19,"end_line":11,"end_character":26},"updated":"2021-02-03 14:03:00.000000000","message":"nit: Neutron commands or networking commands?","commit_id":"a2fdf41d3e6f5619240ec2fed46022beba81b5ad"}],"openstack/network/v2/address_group.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8ec830cbeb893b06541addad789b7756339489a6","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    allow_delete \u003d True"},{"line_number":29,"context_line":"    allow_list \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _allow_unkown_attrs_in_body \u003d True"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":34,"context_line":"        \"sort_key\", \"sort_dir\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3619182b_8f1ca9f1","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":31},"updated":"2021-01-21 15:22:13.000000000","message":"s/_allow_unkown_attrs_in_body/_allow_unknown_attrs_in_body","commit_id":"6298e647d56b00b50e1912f6835c762c2d470680"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3f780dc37ba6bee304bc6225a77abd23afe88e21","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_delete \u003d True"},{"line_number":29,"context_line":"    allow_list \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _allow_unkown_attrs_in_body \u003d True"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":34,"context_line":"        \"sort_key\", \"sort_dir\","}],"source_content_type":"text/x-python","patch_set":3,"id":"e030a727_87c53cdd","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":31},"in_reply_to":"3619182b_8f1ca9f1","updated":"2021-02-03 11:25:49.000000000","message":"Done","commit_id":"6298e647d56b00b50e1912f6835c762c2d470680"}],"openstack/network/v2/port.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bd3ff3baa52454ec191a5b4943c2cef78422d3bb","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    allow_delete \u003d True"},{"line_number":27,"context_line":"    allow_list \u003d True"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    _allow_unkown_attrs_in_body \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # NOTE: we skip query on list or datetime fields for now"},{"line_number":32,"context_line":"    _query_mapping \u003d resource.QueryParameters("}],"source_content_type":"text/x-python","patch_set":1,"id":"e36cebe1_0dda6713","line":29,"updated":"2020-12-23 12:09:06.000000000","message":"\"unknown\"","commit_id":"ebebb296759a6006ae96dfb7762cd170d64f2a84"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"30971ff6fcb3fe5e2360e1786af512ac023d75aa","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    allow_delete \u003d True"},{"line_number":27,"context_line":"    allow_list \u003d True"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    _allow_unkown_attrs_in_body \u003d True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # NOTE: we skip query on list or datetime fields for now"},{"line_number":32,"context_line":"    _query_mapping \u003d resource.QueryParameters("}],"source_content_type":"text/x-python","patch_set":1,"id":"9d6568ae_29f7f661","line":29,"in_reply_to":"e36cebe1_0dda6713","updated":"2021-01-14 14:48:12.000000000","message":"Done","commit_id":"ebebb296759a6006ae96dfb7762cd170d64f2a84"}],"openstack/resource.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"ba66310df05f61d83870c2d2619442f928d9a5a0","unresolved":true,"context_lines":[{"line_number":492,"context_line":"    _delete_response_class \u003d None"},{"line_number":493,"context_line":"    _store_unknown_attrs_as_properties \u003d False"},{"line_number":494,"context_line":"    _allow_unknown_attrs_in_body \u003d False"},{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d {}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"57235b60_97f519ae","line":495,"updated":"2021-04-16 14:38:37.000000000","message":"Isn\u0027t this going to create a singleton dict stored on the class? I think you want None here - and then in __init__ assign to it instead of doing the update. It\u0027ll only show up as an issue in long-lived processes with multiple distinct Resources that have different overlapping sets of unknown attrs, and will fail by just continuing to accumulate.","commit_id":"7102e411f7cab36c6afc7cf6c73e175628875aca"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a65442511f0ae58af9ee0ffcb7e0983d0cf3aa81","unresolved":true,"context_lines":[{"line_number":492,"context_line":"    _delete_response_class \u003d None"},{"line_number":493,"context_line":"    _store_unknown_attrs_as_properties \u003d False"},{"line_number":494,"context_line":"    _allow_unknown_attrs_in_body \u003d False"},{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d {}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"6d78665e_6346ba2f","line":495,"in_reply_to":"57235b60_97f519ae","updated":"2021-04-20 17:13:35.000000000","message":"Good spot. This should certainly be set by __init__","commit_id":"7102e411f7cab36c6afc7cf6c73e175628875aca"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"74c20211fc40bfe5a8f4f02b5a17c6f074db1ca9","unresolved":false,"context_lines":[{"line_number":492,"context_line":"    _delete_response_class \u003d None"},{"line_number":493,"context_line":"    _store_unknown_attrs_as_properties \u003d False"},{"line_number":494,"context_line":"    _allow_unknown_attrs_in_body \u003d False"},{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d {}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"d6fdd29a_3c5911fb","line":495,"in_reply_to":"6d78665e_6346ba2f","updated":"2021-04-21 07:54:10.000000000","message":"Done","commit_id":"7102e411f7cab36c6afc7cf6c73e175628875aca"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3b8b245df264d582a8d5610867f02647bbc9ca35","unresolved":false,"context_lines":[{"line_number":492,"context_line":"    _delete_response_class \u003d None"},{"line_number":493,"context_line":"    _store_unknown_attrs_as_properties \u003d False"},{"line_number":494,"context_line":"    _allow_unknown_attrs_in_body \u003d False"},{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d {}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"9634a29e_d996f242","line":495,"in_reply_to":"d6fdd29a_3c5911fb","updated":"2021-04-21 08:45:21.000000000","message":"Thx Artem for updating that.","commit_id":"7102e411f7cab36c6afc7cf6c73e175628875aca"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3b8b245df264d582a8d5610867f02647bbc9ca35","unresolved":true,"context_lines":[{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d None"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d None"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def __init__(self, _synchronized\u003dFalse, connection\u003dNone, **attrs):"},{"line_number":501,"context_line":"        \"\"\"The base resource"}],"source_content_type":"text/x-python","patch_set":10,"id":"731dd4d2_c17ec634","line":498,"updated":"2021-04-21 08:45:21.000000000","message":"to be strict this change isn\u0027t really related to that patch","commit_id":"d8aca9413d9baeeddffa733e98f78ddbc4a0c785"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"425a15845d04cf3bd42478d143a5731ba2e12f2d","unresolved":false,"context_lines":[{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d None"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d None"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def __init__(self, _synchronized\u003dFalse, connection\u003dNone, **attrs):"},{"line_number":501,"context_line":"        \"\"\"The base resource"}],"source_content_type":"text/x-python","patch_set":10,"id":"bd7237d5_74fb6d62","line":498,"in_reply_to":"731dd4d2_c17ec634","updated":"2021-04-21 09:23:01.000000000","message":"This is true, but it\u0027s a good fix to include here all the same, IMO. If there was any reason to not include it, it would be so that we could backport the separate fix. Hardly seems worth it here though, given there\u0027s no open report for this issue fwict","commit_id":"d8aca9413d9baeeddffa733e98f78ddbc4a0c785"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"46d0b720c847cf527dfe12042bb0c02913efa313","unresolved":false,"context_lines":[{"line_number":495,"context_line":"    _unknown_attrs_in_body \u003d None"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    # Placeholder for aliases as dict of {__alias__:__original}"},{"line_number":498,"context_line":"    _attr_aliases \u003d None"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def __init__(self, _synchronized\u003dFalse, connection\u003dNone, **attrs):"},{"line_number":501,"context_line":"        \"\"\"The base resource"}],"source_content_type":"text/x-python","patch_set":10,"id":"3c13edaf_d9cfa535","line":498,"in_reply_to":"bd7237d5_74fb6d62","updated":"2021-04-21 09:54:21.000000000","message":"Well, and now back to have it out. Need to fix OSC usage first, so let\u0027s not block this one","commit_id":"d8aca9413d9baeeddffa733e98f78ddbc4a0c785"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"425a15845d04cf3bd42478d143a5731ba2e12f2d","unresolved":false,"context_lines":[{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        self._unknown_attrs_in_body \u003d {}"},{"line_number":517,"context_line":"        self._attr_aliases \u003d {}"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        # NOTE: _collect_attrs modifies **attrs in place, removing"},{"line_number":520,"context_line":"        # items as they match up with any of the body, header,"},{"line_number":521,"context_line":"        # or uri mappings."}],"source_content_type":"text/x-python","patch_set":10,"id":"33a81ecb_f0fb8b53","line":518,"updated":"2021-04-21 09:23:01.000000000","message":"Just sanity checked that this is doing the right thing, because I wasn\u0027t actually 100% sure about the interplay between class and instance attributes 😄\n\n  \u003e\u003e\u003e class Foo:\n  ...     test \u003d {}\n  ...     def add_test(self, test, value):\n  ...             self.test.update({test: value})\n  ...\n  \u003e\u003e\u003e foo1 \u003d Foo()\n  \u003e\u003e\u003e foo2 \u003d Foo()\n  \u003e\u003e\u003e foo1.test\n  {}\n  \u003e\u003e\u003e foo2.test\n  {}\n  \u003e\u003e\u003e foo1.add_test(\u0027hello\u0027, \u0027world\u0027)\n  \u003e\u003e\u003e foo1.test\n  {\u0027hello\u0027: \u0027world\u0027}\n  \u003e\u003e\u003e foo2.test\n  {\u0027hello\u0027: \u0027world\u0027}\n\nvs.\n\n  \u003e\u003e\u003e class Bar:\n  ...     test \u003d None\n  ...     def __init__(self):\n  ...             self.test \u003d {}\n  ...     def add_test(self, test, value):\n  ...             self.test.update({test: value})\n  ...\n  \u003e\u003e\u003e bar1 \u003d Bar()\n  \u003e\u003e\u003e bar2 \u003d Bar()\n  \u003e\u003e\u003e bar1.test\n  {}\n  \u003e\u003e\u003e bar2.test\n  {}\n  \u003e\u003e\u003e bar1.add_test(\u0027hello\u0027, \u0027world\u0027)\n  \u003e\u003e\u003e bar1.test\n  {\u0027hello\u0027: \u0027world\u0027}\n  \u003e\u003e\u003e bar2.test\n  {}\n\nAll good","commit_id":"d8aca9413d9baeeddffa733e98f78ddbc4a0c785"}]}
