)]}'
{"keystoneclient/auth/identity/v3/base.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"1ed54be65ebf65b526448c0dc8b2f4b5765eb8a0","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            setattr(self, param, kwargs.pop(param, None))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if kwargs:"},{"line_number":211,"context_line":"            msg \u003d _(\"Unexpected Attributes: %s\") % \", \".join(kwargs)"},{"line_number":212,"context_line":"            raise AttributeError(msg)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_d1241c0e","line":211,"updated":"2015-06-24 13:00:11.000000000","message":"I don\u0027t like this change. Yes, .keys() was not really necessary, but the code was explicitely saying \"join keys and print them\". After the change it\u0027s implicit.","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"6192d8445ec67f5c30624f5ace6ea63200ee73e8","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            setattr(self, param, kwargs.pop(param, None))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if kwargs:"},{"line_number":211,"context_line":"            msg \u003d _(\"Unexpected Attributes: %s\") % \", \".join(kwargs)"},{"line_number":212,"context_line":"            raise AttributeError(msg)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_258dedd2","line":211,"in_reply_to":"fa32b979_25b88d10","updated":"2015-06-24 19:30:23.000000000","message":"Actually  dict is more efficient than dict.keys(). Or we can use dict.viewkeys() which is same as dict. dict returns an iterator whereas dict.keys creates a list and returns it","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4cc143509a597a3ff78e349dff97bf88f956a996","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            setattr(self, param, kwargs.pop(param, None))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if kwargs:"},{"line_number":211,"context_line":"            msg \u003d _(\"Unexpected Attributes: %s\") % \", \".join(kwargs)"},{"line_number":212,"context_line":"            raise AttributeError(msg)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_5bbed165","line":211,"in_reply_to":"fa32b979_d1241c0e","updated":"2015-06-24 21:42:18.000000000","message":"It is explicitly using the keys, there\u0027s no other option in python for what\u0027s going to happen.","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4d8452b797d31ca5d408852b958ab2acf2ba7728","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            setattr(self, param, kwargs.pop(param, None))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if kwargs:"},{"line_number":211,"context_line":"            msg \u003d _(\"Unexpected Attributes: %s\") % \", \".join(kwargs)"},{"line_number":212,"context_line":"            raise AttributeError(msg)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_25b88d10","line":211,"in_reply_to":"fa32b979_d1241c0e","updated":"2015-06-24 19:13:46.000000000","message":"why it is implicit? if one knows that it has the same result, the older syntax is not \"more\" explicit IMHO","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"}],"keystoneclient/httpclient.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"1ed54be65ebf65b526448c0dc8b2f4b5765eb8a0","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        Returns a slash-separated string of values ordered by key name."},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        \"\"\""},{"line_number":535,"context_line":"        return \u0027/\u0027.join([kwargs[k] or \u0027?\u0027 for k in sorted(kwargs)])"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def get_auth_ref_from_keyring(self, **kwargs):"},{"line_number":538,"context_line":"        \"\"\"Retrieve auth_ref from keyring."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_714bd0b1","line":535,"updated":"2015-06-24 13:00:11.000000000","message":"same here","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"}],"keystoneclient/openstack/common/apiclient/client.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"1ed54be65ebf65b526448c0dc8b2f4b5765eb8a0","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                    \"Must be one of: %(version_map)s\") % {"},{"line_number":383,"context_line":"                        \u0027api_name\u0027: api_name,"},{"line_number":384,"context_line":"                        \u0027version\u0027: version,"},{"line_number":385,"context_line":"                        \u0027version_map\u0027: \u0027, \u0027.join(version_map)}"},{"line_number":386,"context_line":"            raise exceptions.UnsupportedVersion(msg)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        return importutils.import_class(client_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_f1e4c0a8","line":385,"updated":"2015-06-24 13:00:11.000000000","message":"same here","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"}],"keystoneclient/session.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7c1159e1bd967ef62a4ee709099786dbf1be4880","unresolved":false,"context_lines":[{"line_number":678,"context_line":"        for arg in (\u0027cert\u0027, \u0027verify\u0027):"},{"line_number":679,"context_line":"            try:"},{"line_number":680,"context_line":"                kwargs[arg] \u003d params_copy.pop(arg)"},{"line_number":681,"context_line":"            except KeyError:"},{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7febe478","line":681,"updated":"2015-07-27 11:34:34.000000000","message":"I\u0027d rather simply call pop 2 times here:\n\nparams_copy.pop(\u0027cert\u0027, None)\n\nparams_copy.pop(\u0027verify\u0027, None)","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"f5a27f6d7b023b600fca5ec104088feac4ca265d","unresolved":false,"context_lines":[{"line_number":678,"context_line":"        for arg in (\u0027cert\u0027, \u0027verify\u0027):"},{"line_number":679,"context_line":"            try:"},{"line_number":680,"context_line":"                kwargs[arg] \u003d params_copy.pop(arg)"},{"line_number":681,"context_line":"            except KeyError:"},{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_9f31100e","line":681,"in_reply_to":"3a50d1a3_7febe478","updated":"2015-07-27 11:38:53.000000000","message":"Don\u0027t mention this comment, I haven\u0027t paid attention you are assembling kwargs...","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"907f3395e0062b86de57bb51105439ea8afce96d","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"},{"line_number":685,"context_line":"            raise exceptions.UnsupportedParameters(list(params_copy))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        return params"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_3b3929d9","line":685,"range":{"start_line":685,"start_character":29,"end_line":685,"end_character":50},"updated":"2015-06-26 18:42:38.000000000","message":"list is not needed here","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"1ed54be65ebf65b526448c0dc8b2f4b5765eb8a0","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"},{"line_number":685,"context_line":"            raise exceptions.UnsupportedParameters(list(params_copy))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        return params"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_71a75050","line":685,"updated":"2015-06-24 13:00:11.000000000","message":"same here","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7c1159e1bd967ef62a4ee709099786dbf1be4880","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"},{"line_number":685,"context_line":"            raise exceptions.UnsupportedParameters(list(params_copy))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        return params"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7fd444bc","line":685,"in_reply_to":"3a50d1a3_190a5cd3","updated":"2015-07-27 11:34:34.000000000","message":"Why cannot we rely on dict.keys() to return list? I\u0027ve just tested is - it\u0027s twice as fast as list(dict)","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0bbcf064338cffd74f6f14c82d93db5a999c5adf","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"},{"line_number":685,"context_line":"            raise exceptions.UnsupportedParameters(list(params_copy))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        return params"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_586dde02","line":685,"in_reply_to":"3a50d1a3_7fd444bc","updated":"2015-07-27 12:32:41.000000000","message":"dict.keys() doesn\u0027t return a list when using python 3.","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bd74f6c767eea9ed55178cba9a90ce88aa44301e","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                pass"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        if params_copy:"},{"line_number":685,"context_line":"            raise exceptions.UnsupportedParameters(list(params_copy))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        return params"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_190a5cd3","line":685,"in_reply_to":"fa32b979_3b3929d9","updated":"2015-07-19 14:56:30.000000000","message":"The docstring for UnsupportedParameters says it takes a list.","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"}],"keystoneclient/tests/unit/test_memcache_crypt.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"1ed54be65ebf65b526448c0dc8b2f4b5765eb8a0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                         len(keys[\u0027MAC\u0027]))"},{"line_number":50,"context_line":"        self.assertNotEqual(keys[\u0027ENCRYPTION\u0027],"},{"line_number":51,"context_line":"                            keys[\u0027MAC\u0027])"},{"line_number":52,"context_line":"        self.assertIn(\u0027strategy\u0027, keys)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_key_strategy_diff(self):"},{"line_number":55,"context_line":"        k1 \u003d self._setup_keys(b\u0027MAC\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_9129b49d","line":52,"updated":"2015-06-24 13:00:11.000000000","message":"I am not sure about this either. keys.keys() was not a good name, but it gave us a hint that `keys` is a dict and we are looking for one of its keys.","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4d8452b797d31ca5d408852b958ab2acf2ba7728","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                         len(keys[\u0027MAC\u0027]))"},{"line_number":50,"context_line":"        self.assertNotEqual(keys[\u0027ENCRYPTION\u0027],"},{"line_number":51,"context_line":"                            keys[\u0027MAC\u0027])"},{"line_number":52,"context_line":"        self.assertIn(\u0027strategy\u0027, keys)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_key_strategy_diff(self):"},{"line_number":55,"context_line":"        k1 \u003d self._setup_keys(b\u0027MAC\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_a559fdfe","line":52,"in_reply_to":"fa32b979_9129b49d","updated":"2015-06-24 19:13:46.000000000","message":"Agree here, keys now seems to be a list, not a dict","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cf15fa1d03aa589e6d0c84721d2fb817a36a61e1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                         len(keys[\u0027MAC\u0027]))"},{"line_number":50,"context_line":"        self.assertNotEqual(keys[\u0027ENCRYPTION\u0027],"},{"line_number":51,"context_line":"                            keys[\u0027MAC\u0027])"},{"line_number":52,"context_line":"        self.assertIn(\u0027strategy\u0027, keys)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_key_strategy_diff(self):"},{"line_number":55,"context_line":"        k1 \u003d self._setup_keys(b\u0027MAC\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_223875d2","line":52,"in_reply_to":"fa32b979_9b7f79aa","updated":"2015-06-25 02:35:06.000000000","message":"you are right, haven\u0027t noticed the str access in previous lines","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4cc143509a597a3ff78e349dff97bf88f956a996","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                         len(keys[\u0027MAC\u0027]))"},{"line_number":50,"context_line":"        self.assertNotEqual(keys[\u0027ENCRYPTION\u0027],"},{"line_number":51,"context_line":"                            keys[\u0027MAC\u0027])"},{"line_number":52,"context_line":"        self.assertIn(\u0027strategy\u0027, keys)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_key_strategy_diff(self):"},{"line_number":55,"context_line":"        k1 \u003d self._setup_keys(b\u0027MAC\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_9b7f79aa","line":52,"in_reply_to":"fa32b979_a559fdfe","updated":"2015-06-24 21:42:18.000000000","message":"keys couldn\u0027t be a list here. It was used with keys[\u0027MAC\u0027] on the previous line, and list doesn\u0027t support get item by string.","commit_id":"40a3a655c3ae87851d558abc8bff3639451ac095"}]}
