)]}'
{"keystoneclient/base.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0aa2ee7641441e9bc0dea548c573cea011b76872","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        query +\u003d \u0027%s\u0027 % urllib.parse.urlencode(params) if params else \u0027\u0027"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        return query"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def build_key_only_query(self, params_list):"},{"line_number":370,"context_line":"        \"\"\"Build a query that does not include values, just keys."}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_21b5e87d","line":367,"updated":"2017-01-25 00:06:27.000000000","message":"This is handled by the doseq\u003dTrue or the urllib parse functions eg: \n\n\u003e\u003e\u003e from six.moves.urllib import parse\n\u003e\u003e\u003e params \u003d {\u0027a\u0027: [\u00271\u0027, \u00272\u0027], \u0027b\u0027: \u00273\u0027}\n\u003e\u003e\u003e parse.urlencode(params, doseq\u003dTrue)\n\u0027a\u003d1\u0026a\u003d2\u0026b\u003d3\u0027\n\ndoseq is a pretty terrible name, but shows up in places like query strings and request headers when you want to represent something as a dictionary, but it doesn\u0027t necessarily have unique keys. \n\nIt should be sufficient to add doseq\u003dTrue to urlencode().","commit_id":"fdc2d4528e1b610451a523c29ee7a20eb373fc07"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"f30b65bb07a71b75855d114e59d7122224da62b3","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        query +\u003d \u0027%s\u0027 % urllib.parse.urlencode(params) if params else \u0027\u0027"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        return query"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def build_key_only_query(self, params_list):"},{"line_number":370,"context_line":"        \"\"\"Build a query that does not include values, just keys."}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_ca77d906","line":367,"in_reply_to":"5a3905b3_21b5e87d","updated":"2017-01-25 01:44:32.000000000","message":"Done","commit_id":"fdc2d4528e1b610451a523c29ee7a20eb373fc07"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d695da7db6a1e10745b8fc6fcc7b326db11e9b37","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        return self._head(self.build_url(dict_args_in_out\u003dkwargs))"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def _build_query(self, params):"},{"line_number":356,"context_line":"        if params is None:"},{"line_number":357,"context_line":"            return \u0027\u0027"},{"line_number":358,"context_line":"        else:"},{"line_number":359,"context_line":"            return \u0027?%s\u0027 % urllib.parse.urlencode(params, doseq\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_e402090b","line":356,"updated":"2017-01-25 03:41:21.000000000","message":"not a great fan of the \"is None\" because it will cause a \"? \" for whitespace for example. \n\nIt probably doesn\u0027t matter.","commit_id":"ef6ffa651616476d4207549b3121bfde096e16cf"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7776ed91df9ce863c7c26040b77b64f535112ecb","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if params is None:"},{"line_number":357,"context_line":"            return \u0027\u0027"},{"line_number":358,"context_line":"        else:"},{"line_number":359,"context_line":"            return \u0027?%s\u0027 % urllib.parse.urlencode(params, doseq\u003dTrue)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def build_key_only_query(self, params_list):"},{"line_number":362,"context_line":"        \"\"\"Build a query that does not include values, just keys."}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_10aaf485","line":359,"range":{"start_line":359,"start_character":58,"end_line":359,"end_character":69},"updated":"2017-01-25 02:41:17.000000000","message":"thanks jamie!","commit_id":"ef6ffa651616476d4207549b3121bfde096e16cf"}],"keystoneclient/tests/functional/v3/test_users.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8991c7b15ebc58ce1850f7a2dc7cd67a2c40c6c6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027description\u0027: uuid.uuid4().hex}"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        user2_ref \u003d {"},{"line_number":88,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":89,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":90,"context_line":"            \u0027default_project\u0027: self.project_id,"},{"line_number":91,"context_line":"            \u0027password\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_7ed35860","line":88,"updated":"2017-01-23 19:19:31.000000000","message":"Does this have to be fixtures.RESOURCE_NAME_PREFIX? Are we only using it so that we have something other than \u0027test\u0027 and \u0027user\u0027 so that we only get a single user back in the response?","commit_id":"97ae5494c74d1b9d4643d8a1949f02d4f62c5acd"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"f59f416d1b3e6c0290b96fd059b6d9c36ebf6d0a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027description\u0027: uuid.uuid4().hex}"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        user2_ref \u003d {"},{"line_number":88,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":89,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":90,"context_line":"            \u0027default_project\u0027: self.project_id,"},{"line_number":91,"context_line":"            \u0027password\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_41815d8e","line":88,"in_reply_to":"5a3905b3_7ed35860","updated":"2017-01-23 19:59:39.000000000","message":"Yes that is why. I could change it so its more explicit the names are different.","commit_id":"97ae5494c74d1b9d4643d8a1949f02d4f62c5acd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8991c7b15ebc58ce1850f7a2dc7cd67a2c40c6c6","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        user1 \u003d self.client.users.create(**user1_ref)"},{"line_number":95,"context_line":"        user2 \u003d self.client.users.create(**user2_ref)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        users \u003d self.client.users.list(name__contains\u003d[\u0027test\u0027, \u0027user\u0027])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # All users are valid"},{"line_number":100,"context_line":"        for user in users:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_3e5550c5","line":97,"updated":"2017-01-23 19:19:31.000000000","message":"This should only return one user, right (user1_ref)? If so - we could assert that the length of the list is one. It makes reading the test a little more explicit.","commit_id":"97ae5494c74d1b9d4643d8a1949f02d4f62c5acd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f3fd8b44c23174603b0f68636121a617fd08016e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.client.users.create(**user2_ref)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        users \u003d self.client.users.list(name__contains\u003d[\u0027test_user\u0027, suffix])"},{"line_number":99,"context_line":"        self.assertEqual(1, len(users))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def test_update_user(self):"},{"line_number":102,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a3905b3_77bd3bd7","line":99,"updated":"2017-01-23 20:22:07.000000000","message":"We could keep the original assertion here:\n\n  users \u003d self.client.users.list(name__contains\u003d[\u0027test_user\u0027, suffix])\n  self.assertEqual(1, len(users))\n  self.assertIn(user1, users)","commit_id":"d8c9540cd3c66b00320aa403393106d2ecf1f7a8"}]}
