)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2c74471878cb6c4a7e7f59d1638b8d81148c3184","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-12 18:38:19 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Overrides filter builtin using six"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3685a8ecb4d34258e44a1480c4f78aaaf4dca27c"},{"line_number":10,"context_line":"Implements: bp keystone-py3kcompat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2FUps%3D","line":7,"updated":"2014-02-13 23:49:33.000000000","message":"why do we need to do this? the blueprint doesn\u0027t explain it either.","commit_id":"8efaf2efa273b62cdb9e7e38691f0724f49e588d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6c6032a5d3ec1b60e9e9d707a36bbf374f81c408","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-12 18:38:19 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Overrides filter builtin using six"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3685a8ecb4d34258e44a1480c4f78aaaf4dca27c"},{"line_number":10,"context_line":"Implements: bp keystone-py3kcompat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUX%2F%2Buik%3D","line":7,"in_reply_to":"AAAAUX%2F%2FUps%3D","updated":"2014-02-21 21:09:56.000000000","message":"In Py2 filter returns a list, but in Py3 it returns a generator. Using six we make Py2 behave like Py3.","commit_id":"8efaf2efa273b62cdb9e7e38691f0724f49e588d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"767dfb400b245114b67f3cf83e12792c742919ae","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-21 21:00:40 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Overrides filter builtin using six"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3685a8ecb4d34258e44a1480c4f78aaaf4dca27c"},{"line_number":10,"context_line":"Implements: bp keystone-py3kcompat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAU3%2F%2F9H4%3D","line":7,"updated":"2014-02-23 15:49:22.000000000","message":"why do we need to do this? the blueprint doesn\u0027t explain it either.\n\nUpdate the commit message with the reason.","commit_id":"96e5df670e953e0c7f88f1b8183ec8d19f84e6b4"}],"keystone/assignment/backends/kvs.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"767dfb400b245114b67f3cf83e12792c742919ae","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from six.moves import filter  # flake8: noqa"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone import assignment"},{"line_number":18,"context_line":"from keystone import clean"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2F9HE%3D","line":15,"updated":"2014-02-23 15:49:22.000000000","message":"I\u0027d rather we did\n\n from six import moves\n\nand then did moves.filter where we used filter before.\n\nWe shouldn\u0027t be overriding the filter builtin.\n\nThis applies to all the changes.","commit_id":"96e5df670e953e0c7f88f1b8183ec8d19f84e6b4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"dd8105e244fa354a825056e4c1cf43481c97dcb6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def list_projects_in_domain(self, domain_id):"},{"line_number":68,"context_line":"        project_refs \u003d self._build_project_refs()"},{"line_number":69,"context_line":"        self.get_domain(domain_id)"},{"line_number":70,"context_line":"        return [ref for ref in project_refs if domain_id in ref[\u0027domain_id\u0027]]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def get_project_by_name(self, tenant_name, domain_id):"},{"line_number":73,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2B3MI%3D","line":70,"updated":"2014-03-22 15:31:28.000000000","message":"shouldn\u0027t this be domain_id \u003d\u003d ref[\u0027domain_id\u0027] ?","commit_id":"ea55f46b6d5124a152bca1c01cf38323fa1d58f7"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0208947a5a9d28eb2627a5382cf1677047c01b64","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def list_projects_in_domain(self, domain_id):"},{"line_number":68,"context_line":"        project_refs \u003d self._build_project_refs()"},{"line_number":69,"context_line":"        self.get_domain(domain_id)"},{"line_number":70,"context_line":"        return [ref for ref in project_refs if domain_id in ref[\u0027domain_id\u0027]]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def get_project_by_name(self, tenant_name, domain_id):"},{"line_number":73,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BmlI%3D","line":70,"in_reply_to":"AAAAWH%2F%2B3MI%3D","updated":"2014-03-25 16:17:29.000000000","message":"++","commit_id":"ea55f46b6d5124a152bca1c01cf38323fa1d58f7"}],"keystone/common/kvs/backends/memcached.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2c74471878cb6c4a7e7f59d1638b8d81148c3184","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# dogpile expects a list, not a generator"},{"line_number":39,"context_line":"VALID_DOGPILE_BACKENDS \u003d list(filter("},{"line_number":40,"context_line":"    lambda x: x not in (\u0027GenericMemcachedBackend\u0027, \u0027MemcachedLock\u0027),"},{"line_number":41,"context_line":"    memcached.__all__))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FUqo%3D","line":38,"updated":"2014-02-13 23:49:33.000000000","message":"(note) this is going to conflict with https://review.openstack.org/#/c/70523/9/keystone/common/kvs/backends/memcached.py","commit_id":"8efaf2efa273b62cdb9e7e38691f0724f49e588d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6c6032a5d3ec1b60e9e9d707a36bbf374f81c408","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# dogpile expects a list, not a generator"},{"line_number":39,"context_line":"VALID_DOGPILE_BACKENDS \u003d list(filter("},{"line_number":40,"context_line":"    lambda x: x not in (\u0027GenericMemcachedBackend\u0027, \u0027MemcachedLock\u0027),"},{"line_number":41,"context_line":"    memcached.__all__))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2BU5I%3D","line":38,"in_reply_to":"AAAAUX%2F%2FUqo%3D","updated":"2014-02-21 21:09:56.000000000","message":"rebased on top of that patch","commit_id":"8efaf2efa273b62cdb9e7e38691f0724f49e588d"}]}
