)]}'
{"keystone/common/sql/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f368afaa7878e7192b7175869218d4a0f20df7ba","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            # programmers NOT end users."},{"line_number":149,"context_line":"            raise AttributeError(cls._msg)  # no qa"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        extra \u003d {k: new_d.pop(k) for k in six.iterkeys(d)"},{"line_number":152,"context_line":"                 if k not in cls.attributes and k !\u003d \u0027extra\u0027}"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # filter extra properties with None values,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_343e178c","line":151,"updated":"2017-07-17 16:03:41.000000000","message":"No need to use six here - https://wiki.openstack.org/wiki/Python3#Common_patterns","commit_id":"44a8ae454ae45162a949e6916c01f71b3363f90d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f368afaa7878e7192b7175869218d4a0f20df7ba","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                 if k not in cls.attributes and k !\u003d \u0027extra\u0027}"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # filter extra properties with None values,"},{"line_number":155,"context_line":"        # because storing them is meaningless"},{"line_number":156,"context_line":"        filtered_extra \u003d {k: v for k, v in extra.items() if v is not None}"},{"line_number":157,"context_line":"        new_d[\u0027extra\u0027] \u003d filtered_extra"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_74992f77","line":155,"updated":"2017-07-17 16:03:41.000000000","message":"If we do take this approach, we should make it so that this filtering is initiated by the client. That way the default behavior is preserved and the ability to filter based on None is something clients can opt into.","commit_id":"44a8ae454ae45162a949e6916c01f71b3363f90d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35d9420afb65fc707305812ee450effca598d90f","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                 if k not in cls.attributes and k !\u003d \u0027extra\u0027}"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # filter extra properties with None values,"},{"line_number":155,"context_line":"        # because storing them is meaningless"},{"line_number":156,"context_line":"        filtered_extra \u003d {k: v for k, v in extra.items() if v is not None}"},{"line_number":157,"context_line":"        new_d[\u0027extra\u0027] \u003d filtered_extra"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_b47587cd","line":155,"in_reply_to":"1f1a1f67_74992f77","updated":"2017-07-17 16:19:14.000000000","message":"Otherwise - this is a backwards incompatible API change.","commit_id":"44a8ae454ae45162a949e6916c01f71b3363f90d"}],"keystone/tests/unit/common/test_sql_core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f368afaa7878e7192b7175869218d4a0f20df7ba","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.assertEqual(expected, m.to_dict())"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class TestModelDict(ModelBase, sql.DictBase):"},{"line_number":58,"context_line":"    __tablename__ \u003d \u0027testmodeldict\u0027"},{"line_number":59,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027text\u0027]"},{"line_number":60,"context_line":"    id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_94004bad","line":57,"updated":"2017-07-17 16:03:41.000000000","message":"sql.DictBase is no longer available. Instead there are a couple mixins the enforce more strict requirements on extras.","commit_id":"44a8ae454ae45162a949e6916c01f71b3363f90d"}]}
