)]}'
{"keystoneclient/base.py":[{"author":{"_account_id":13079,"name":"Abhishek Asthana","email":"asthana.abhishek@tcs.com","username":"abhiasth"},"change_message_id":"2f1a37d70961bec6b411b3e36b839875dc97af22","unresolved":false,"context_lines":[{"line_number":335,"context_line":"    @filter_kwargs"},{"line_number":336,"context_line":"    def head(self, **kwargs):"},{"line_number":337,"context_line":"        return self._head(self.build_url(dict_args_in_out\u003dkwargs))"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _build_query(self, params):"},{"line_number":340,"context_line":"        if params:"},{"line_number":341,"context_line":"            return \u0027?%s\u0027 % urllib.parse.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_4bf69d90","line":338,"updated":"2014-09-11 03:56:41.000000000","message":"Looks good, but I believe the decorator @filter_kwargs should apply as well here","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cce0d29eedf2f70b49c3c07fd84dfeac31c07caf","unresolved":false,"context_lines":[{"line_number":335,"context_line":"    @filter_kwargs"},{"line_number":336,"context_line":"    def head(self, **kwargs):"},{"line_number":337,"context_line":"        return self._head(self.build_url(dict_args_in_out\u003dkwargs))"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _build_query(self, params):"},{"line_number":340,"context_line":"        if params:"},{"line_number":341,"context_line":"            return \u0027?%s\u0027 % urllib.parse.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_b81af6c3","line":338,"in_reply_to":"fa98f980_4bf69d90","updated":"2014-09-11 11:49:47.000000000","message":"why? isn\u0027t the caller already being filtered?","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":13079,"name":"Abhishek Asthana","email":"asthana.abhishek@tcs.com","username":"abhiasth"},"change_message_id":"f4958532bcbbfa857ef72ba17b5f228024cde956","unresolved":false,"context_lines":[{"line_number":335,"context_line":"    @filter_kwargs"},{"line_number":336,"context_line":"    def head(self, **kwargs):"},{"line_number":337,"context_line":"        return self._head(self.build_url(dict_args_in_out\u003dkwargs))"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _build_query(self, params):"},{"line_number":340,"context_line":"        if params:"},{"line_number":341,"context_line":"            return \u0027?%s\u0027 % urllib.parse.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_ba110054","line":338,"in_reply_to":"fa98f980_b81af6c3","updated":"2014-09-11 17:26:18.000000000","message":"I am thinking of future proofing the code, what about the case where a future code revision uses this private function directly and that code is not having the decorator because it does not have kwargs in parameter list. Just a thought....","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c7f9117bfde9a4168b7173efbdbe3ffaf0ece1d2","unresolved":false,"context_lines":[{"line_number":335,"context_line":"    @filter_kwargs"},{"line_number":336,"context_line":"    def head(self, **kwargs):"},{"line_number":337,"context_line":"        return self._head(self.build_url(dict_args_in_out\u003dkwargs))"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _build_query(self, params):"},{"line_number":340,"context_line":"        if params:"},{"line_number":341,"context_line":"            return \u0027?%s\u0027 % urllib.parse.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_b8021409","line":338,"in_reply_to":"fa98f980_ba110054","updated":"2014-09-24 18:08:27.000000000","message":"I wouldn\u0027t add the decorator here. This is not meant to be called directly and I would expect the caller to have already filtered the params.","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"2cc7d8bfd8568fe1b8fa887ed9fa4d5de614104b","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def list(self, **kwargs):"},{"line_number":346,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        query \u003d self._build_query(kwargs)"},{"line_number":349,"context_line":"        return self._list("},{"line_number":350,"context_line":"            \u0027%(url)s%(query)s\u0027 % {"},{"line_number":351,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_d7322ea6","line":348,"updated":"2014-09-11 07:52:22.000000000","message":"Doesn\u0027t improve readability.\nAre you planning to construct more complicated _build_query in near future?\nIMHO, for now it would be enough smth. like:\n    query \u003d \u0027?%s\u0027 % urllib.parse.urlencode(kwargs) if kwargs else \u0027\u0027","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c7f9117bfde9a4168b7173efbdbe3ffaf0ece1d2","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def list(self, **kwargs):"},{"line_number":346,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        query \u003d self._build_query(kwargs)"},{"line_number":349,"context_line":"        return self._list("},{"line_number":350,"context_line":"            \u0027%(url)s%(query)s\u0027 % {"},{"line_number":351,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_130b0326","line":348,"in_reply_to":"fa98f980_66d524e4","updated":"2014-09-24 18:08:27.000000000","message":"I don\u0027t mind this change.","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"2a652960179a265970f1833f8072ebda62444535","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def list(self, **kwargs):"},{"line_number":346,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        query \u003d self._build_query(kwargs)"},{"line_number":349,"context_line":"        return self._list("},{"line_number":350,"context_line":"            \u0027%(url)s%(query)s\u0027 % {"},{"line_number":351,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_f32c9c04","line":348,"in_reply_to":"fa98f980_981d32c1","updated":"2014-09-11 15:01:15.000000000","message":"Well, maybe try standard library then?\nquery \u003d urlparse.urlunsplit((\u0027\u0027, \u0027\u0027, \u0027\u0027, urllib.parse.urlencode(kwargs or {}), \u0027\u0027))\nIs there any need in custom URL builder?","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"e1ddf49468b2627775db5653b96af3f40a1afb62","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def list(self, **kwargs):"},{"line_number":346,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        query \u003d self._build_query(kwargs)"},{"line_number":349,"context_line":"        return self._list("},{"line_number":350,"context_line":"            \u0027%(url)s%(query)s\u0027 % {"},{"line_number":351,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_66d524e4","line":348,"in_reply_to":"fa98f980_9edfc939","updated":"2014-09-12 13:44:28.000000000","message":"But readability is not a goal, right? ;)\nOk, I feel a bit grammar nazi already, there is no harm in private method for now, let it be :)","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cce0d29eedf2f70b49c3c07fd84dfeac31c07caf","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def list(self, **kwargs):"},{"line_number":346,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        query \u003d self._build_query(kwargs)"},{"line_number":349,"context_line":"        return self._list("},{"line_number":350,"context_line":"            \u0027%(url)s%(query)s\u0027 % {"},{"line_number":351,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_981d32c1","line":348,"in_reply_to":"fa98f980_d7322ea6","updated":"2014-09-11 11:49:47.000000000","message":"actually I disagree. The point is to extract common code to an external private method, not to improve readability, which looks pretty clear to me.","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"20df04a4ec1333bf8f320acaea538c9250d7c182","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def list(self, **kwargs):"},{"line_number":346,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        query \u003d self._build_query(kwargs)"},{"line_number":349,"context_line":"        return self._list("},{"line_number":350,"context_line":"            \u0027%(url)s%(query)s\u0027 % {"},{"line_number":351,"context_line":"                \u0027url\u0027: url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_9edfc939","line":348,"in_reply_to":"fa98f980_f32c9c04","updated":"2014-09-11 21:00:41.000000000","message":"I can\u0027t see why query \u003d urlparse.urlunsplit((\u0027\u0027, \u0027\u0027, \u0027\u0027, urllib.parse.urlencode(kwargs or {}), \u0027\u0027)) has a better readability than an method with a suggestive name","commit_id":"62c92f7344abb99de7c5539220bca99a65f4e238"}]}
