)]}'
{"castellan/common/objects/__init__.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c342d0f8ee740aea0a02b82f78123f174bb1e5fd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_2616ad56","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":76},"updated":"2020-07-10 09:02:56.000000000","message":"I think we need a copyright before this line (take example on other files).","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c342d0f8ee740aea0a02b82f78123f174bb1e5fd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from castellan.common.objects import symmetric_key"},{"line_number":19,"context_line":"from castellan.common.objects import x_509"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_managed_objects_by_type \u003d {"},{"line_number":22,"context_line":"    cls.managed_type(): cls for cls in ["},{"line_number":23,"context_line":"        opaque_data.OpaqueData,"},{"line_number":24,"context_line":"        passphrase.Passphrase,"},{"line_number":25,"context_line":"        private_key.PrivateKey,"},{"line_number":26,"context_line":"        public_key.PublicKey,"},{"line_number":27,"context_line":"        symmetric_key.SymmetricKey,"},{"line_number":28,"context_line":"        x_509.X509,"},{"line_number":29,"context_line":"    ]"},{"line_number":30,"context_line":"}"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def from_dict(obj, id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_240a26d1","line":30,"range":{"start_line":21,"start_character":0,"end_line":30,"end_character":1},"updated":"2020-07-10 09:02:56.000000000","message":"Nice usage of `@classmethod`.","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"}],"castellan/common/objects/key.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class Key(managed_object.ManagedObject):"},{"line_number":31,"context_line":"    \"\"\"Base class to represent all keys.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @property"},{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def algorithm(self):"},{"line_number":36,"context_line":"        \"\"\"Returns the key\u0027s algorithm."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_033d6ddc","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":23},"updated":"2020-07-10 09:56:53.000000000","message":"What\u0027s happening here?","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"e5b72b2166e7e6d7196df37674d3f5b5438f449c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class Key(managed_object.ManagedObject):"},{"line_number":31,"context_line":"    \"\"\"Base class to represent all keys.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @property"},{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def algorithm(self):"},{"line_number":36,"context_line":"        \"\"\"Returns the key\u0027s algorithm."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_198f83cd","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":23},"in_reply_to":"bf51134e_033d6ddc","updated":"2020-07-10 16:14:50.000000000","message":"@abc.abstractproperty\n\nDeprecated since version 3.3: It is now possible to use property, property.getter(), property.setter() and property.deleter() with abstractmethod(), making this decorator redundant.","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3a291659da0fadde849236e575094b602838e9aa","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class Key(managed_object.ManagedObject):"},{"line_number":31,"context_line":"    \"\"\"Base class to represent all keys.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @property"},{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def algorithm(self):"},{"line_number":36,"context_line":"        \"\"\"Returns the key\u0027s algorithm."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_5d67164e","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":23},"in_reply_to":"bf51134e_198f83cd","updated":"2020-07-13 11:22:56.000000000","message":"Ack, thanks","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def to_dict(self):"},{"line_number":55,"context_line":"        dict_fields \u003d super().to_dict()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        dict_fields[\"algorithm\"] \u003d self.algorithm"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_273348ad","line":54,"updated":"2020-07-10 09:56:53.000000000","message":"Docstring","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"9256bb7452cf9286503e922fc763af5c44743157","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def to_dict(self):"},{"line_number":55,"context_line":"        dict_fields \u003d super().to_dict()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        dict_fields[\"algorithm\"] \u003d self.algorithm"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_ee8da47c","line":54,"in_reply_to":"bf51134e_273348ad","updated":"2020-07-10 16:52:43.000000000","message":"inherited","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return dict_fields"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @classmethod"},{"line_number":63,"context_line":"    def from_dict(cls, dict_fields, id\u003dNone, metadata_only\u003dFalse):"},{"line_number":64,"context_line":"        value \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not metadata_only and dict_fields[\"value\"] is not None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_472e3c43","line":63,"updated":"2020-07-10 09:56:53.000000000","message":"Could we get a docstring describing these fields?","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"9256bb7452cf9286503e922fc763af5c44743157","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return dict_fields"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @classmethod"},{"line_number":63,"context_line":"    def from_dict(cls, dict_fields, id\u003dNone, metadata_only\u003dFalse):"},{"line_number":64,"context_line":"        value \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not metadata_only and dict_fields[\"value\"] is not None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_2ee95c19","line":63,"in_reply_to":"bf51134e_472e3c43","updated":"2020-07-10 16:52:43.000000000","message":"inherited","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def from_dict(cls, dict_fields, id\u003dNone, metadata_only\u003dFalse):"},{"line_number":64,"context_line":"        value \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not metadata_only and dict_fields[\"value\"] is not None:"},{"line_number":67,"context_line":"            value \u003d binascii.unhexlify(dict_fields[\"value\"])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return cls("}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_07ff24ab","line":66,"updated":"2020-07-10 09:56:53.000000000","message":"An comment explaining what you\u0027re doing here would be helpful","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            value \u003d binascii.unhexlify(dict_fields[\"value\"])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return cls("},{"line_number":70,"context_line":"            algorithm\u003ddict_fields[\"algorithm\"],"},{"line_number":71,"context_line":"            bit_length\u003ddict_fields[\"bit_length\"],"},{"line_number":72,"context_line":"            key\u003dvalue,"},{"line_number":73,"context_line":"            name\u003ddict_fields[\"name\"],"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_e714b0eb","line":70,"updated":"2020-07-10 09:56:53.000000000","message":"I assume exploding with KeyError is the correct thing to do if this is not defined?","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"9256bb7452cf9286503e922fc763af5c44743157","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            value \u003d binascii.unhexlify(dict_fields[\"value\"])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return cls("},{"line_number":70,"context_line":"            algorithm\u003ddict_fields[\"algorithm\"],"},{"line_number":71,"context_line":"            bit_length\u003ddict_fields[\"bit_length\"],"},{"line_number":72,"context_line":"            key\u003dvalue,"},{"line_number":73,"context_line":"            name\u003ddict_fields[\"name\"],"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_cedf0064","line":70,"in_reply_to":"bf51134e_e714b0eb","updated":"2020-07-10 16:52:43.000000000","message":"I can add a new exception for that.","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"}],"castellan/common/objects/managed_object.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def from_dict(cls, dict_fields, id\u003dNone, metadata_only\u003dFalse):"},{"line_number":113,"context_line":"        \"\"\"Returns an instance of this class based on a dict object.\"\"\""},{"line_number":114,"context_line":"        value \u003d None"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if not metadata_only and dict_fields[\"value\"] is not None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_47bc7cdb","line":113,"updated":"2020-07-10 09:56:53.000000000","message":"Could you document the parameters here?","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        )"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def to_dict(self, metadata_only\u003dFalse):"},{"line_number":127,"context_line":"        \"\"\"Returns a dict that can be used with the from_dict() method.\"\"\""},{"line_number":128,"context_line":"        value \u003d None"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if not metadata_only and self.value is not None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_27c18855","line":127,"updated":"2020-07-10 09:56:53.000000000","message":"Parameter and return type docs, please","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"}],"castellan/common/objects/opaque_data.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"},{"line_number":56,"context_line":"    def managed_type(cls):"},{"line_number":57,"context_line":"        \"\"\"This method returns \u0027opaque\u0027.\"\"\""},{"line_number":58,"context_line":"        return \"opaque\""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_877a1474","line":57,"updated":"2020-07-10 09:56:53.000000000","message":"I know you\u0027re copying prior art, but this is a bad bordering on useless docstring :D I mean, _why_ it\u0027s returning it might be helpful but not this. Maybe just drop it?","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"}],"castellan/common/objects/passphrase.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"},{"line_number":56,"context_line":"    def managed_type(cls):"},{"line_number":57,"context_line":"        \"\"\"This method returns \u0027passphrase\u0027.\"\"\""},{"line_number":58,"context_line":"        return \"passphrase\""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_677f0066","line":57,"updated":"2020-07-10 09:56:53.000000000","message":"as with the previous file","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"}],"castellan/common/objects/symmetric_key.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dc06300f1cab7a641adbf099e58f31fe8099fcb8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def managed_type(cls):"},{"line_number":73,"context_line":"        \"\"\"This method returns \u0027symmetric\u0027.\"\"\""},{"line_number":74,"context_line":"        return \"symmetric\""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_d9d5481d","line":75,"updated":"2020-07-07 16:08:35.000000000","message":"pep8: W391 blank line at end of file","commit_id":"cfe98d719c29009a7024e3a45882ba88f5626e11"}],"castellan/common/objects/x_509.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"dc06300f1cab7a641adbf099e58f31fe8099fcb8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def managed_type(cls):"},{"line_number":57,"context_line":"        \"\"\"This method returns \u0027certificate\u0027.\"\"\""},{"line_number":58,"context_line":"        return \"certificate\""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_f9d2cc33","line":59,"updated":"2020-07-07 16:08:35.000000000","message":"pep8: W391 blank line at end of file","commit_id":"cfe98d719c29009a7024e3a45882ba88f5626e11"}],"castellan/tests/unit/objects/test_opaque.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        other_opaque \u003d opaque_data.OpaqueData(b\u0027other data\u0027, self.name)"},{"line_number":83,"context_line":"        self.assertTrue(self.opaque_data !\u003d other_opaque)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_to_and_from_dict(self):"},{"line_number":86,"context_line":"        other \u003d objects.from_dict("},{"line_number":87,"context_line":"            self.opaque_data.to_dict()"},{"line_number":88,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_07c60469","line":85,"updated":"2020-07-10 09:56:53.000000000","message":"Given we\u0027re duplicating this across all tests but the tests have different base classes, how about a mixin?\n\nLater: never mind - each test stores its data in a different variable name :(","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"e5b72b2166e7e6d7196df37674d3f5b5438f449c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        other_opaque \u003d opaque_data.OpaqueData(b\u0027other data\u0027, self.name)"},{"line_number":83,"context_line":"        self.assertTrue(self.opaque_data !\u003d other_opaque)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_to_and_from_dict(self):"},{"line_number":86,"context_line":"        other \u003d objects.from_dict("},{"line_number":87,"context_line":"            self.opaque_data.to_dict()"},{"line_number":88,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_993713ff","line":85,"in_reply_to":"bf51134e_07c60469","updated":"2020-07-10 16:14:50.000000000","message":"I was considering refactoring the tests later to reduce all the duplicated code.","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertTrue(self.opaque_data !\u003d other_opaque)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_to_and_from_dict(self):"},{"line_number":86,"context_line":"        other \u003d objects.from_dict("},{"line_number":87,"context_line":"            self.opaque_data.to_dict()"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.assertTrue(self.opaque_data \u003d\u003d other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_e78af061","line":88,"range":{"start_line":86,"start_character":0,"end_line":88,"end_character":9},"updated":"2020-07-10 09:56:53.000000000","message":"nit: this could all fit on one line, here and elsewhere","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"9256bb7452cf9286503e922fc763af5c44743157","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertTrue(self.opaque_data !\u003d other_opaque)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_to_and_from_dict(self):"},{"line_number":86,"context_line":"        other \u003d objects.from_dict("},{"line_number":87,"context_line":"            self.opaque_data.to_dict()"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.assertTrue(self.opaque_data \u003d\u003d other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_0ed7384d","line":88,"range":{"start_line":86,"start_character":0,"end_line":88,"end_character":9},"in_reply_to":"bf51134e_e78af061","updated":"2020-07-10 16:52:43.000000000","message":"done","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fe7f0c4869181fd061e9d8c6043b9417ebca879","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            self.opaque_data.to_dict()"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.assertTrue(self.opaque_data \u003d\u003d other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_078e0478","line":90,"range":{"start_line":90,"start_character":13,"end_line":90,"end_character":23},"updated":"2020-07-10 09:56:53.000000000","message":"Can you use assertEqual. Other tests too","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"9256bb7452cf9286503e922fc763af5c44743157","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            self.opaque_data.to_dict()"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.assertTrue(self.opaque_data \u003d\u003d other)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_8ec22884","line":90,"range":{"start_line":90,"start_character":13,"end_line":90,"end_character":23},"in_reply_to":"bf51134e_078e0478","updated":"2020-07-10 16:52:43.000000000","message":"done","commit_id":"b633184420900e1d10ada6ba38ed2c7295005076"}],"releasenotes/notes/add-to-dict-and-from-dict-conversions-to-managed-objects-95a9f0fdbd371a87.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3a291659da0fadde849236e575094b602838e9aa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Historically, the vault key manager backend converts its managed objects"},{"line_number":4,"context_line":"    to dictionaries in order to send them as a json object. To promote"},{"line_number":5,"context_line":"    cross-backend compatibility, suck feature should be migrated to managed"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf51134e_5dcc3634","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":10},"updated":"2020-07-13 11:22:56.000000000","message":"I don\u0027t think you should use prelude like this. This is typically used for the highlights of a given release. I\u0027d suggest including this in the \u0027upgrades\u0027 section instead","commit_id":"93538e351db49b64b58e965546b262af4d02b490"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3a291659da0fadde849236e575094b602838e9aa","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Historically, the vault key manager backend converts its managed objects"},{"line_number":4,"context_line":"    to dictionaries in order to send them as a json object. To promote"},{"line_number":5,"context_line":"    cross-backend compatibility, suck feature should be migrated to managed"},{"line_number":6,"context_line":"    objects."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bf51134e_9d5d2e7b","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":37},"updated":"2020-07-13 11:22:56.000000000","message":"such","commit_id":"93538e351db49b64b58e965546b262af4d02b490"}]}
