)]}'
{"keystoneclient/base.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8e4e8eb90d8aac9b9ddbe9ebb13b0fc931dd204a","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def url_quote(val):"},{"line_number":472,"context_line":"    return urllib.parse.quote(str(val))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Fctk%3D","line":472,"updated":"2014-01-13 19:22:15.000000000","message":"i\u0027m not sure i understand the goal of str() here and the implications between py2 and py3... what are you trying to support/avoid that .quote() won\u0027t handle?","commit_id":"6206182d708172c4629239e6d63eb88324b9c2cc"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67194fc96a02e242af749d4c5f2ba10e660cf6b0","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def url_quote(val):"},{"line_number":472,"context_line":"    return urllib.parse.quote(str(val))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B0tY%3D","line":472,"in_reply_to":"AAAAUH%2F%2BT0I%3D","updated":"2014-03-24 01:04:39.000000000","message":"I agree that the tests should be fixed to match our data model.\n\nI don\u0027t there there is much of an issue here with using str. The quote function in Py3 takes either a string or bytes and the Py2 version takes either unicode or strings. I believe that the biggest issue in Py3 is that it would be possible to get a UnicodeDecodeError if the value passed in can\u0027t be converted to a string (unicode version) using the default system encoding. Because of the %s in the old code this probably would have been a problem anyway.","commit_id":"6206182d708172c4629239e6d63eb88324b9c2cc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"98bf894ea64b8b6b09e1bee749ec18978ca185c9","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def url_quote(val):"},{"line_number":472,"context_line":"    return urllib.parse.quote(str(val))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BT0I%3D","line":472,"in_reply_to":"AAAAUH%2F%2Bov0%3D","updated":"2014-01-28 04:54:13.000000000","message":"I\u0027d be interested in the py2/py3 issues of str() but i don\u0027t think that it\u0027s wrong to pass a non-string id. I think that is likely to cause many more issues with compatibility.","commit_id":"6206182d708172c4629239e6d63eb88324b9c2cc"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ea6681a800a87f0e35ddf3ff0c21111c1d856ffc","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def url_quote(val):"},{"line_number":472,"context_line":"    return urllib.parse.quote(str(val))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bov0%3D","line":472,"in_reply_to":"AAAAUH%2F%2Boxs%3D","updated":"2014-01-23 17:20:38.000000000","message":"I would agree, fix tests and remove str() in that case (if strings are the only supported param in ks client)","commit_id":"6206182d708172c4629239e6d63eb88324b9c2cc"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6795a1706abf3b3fda4a08684f73802c83a9f83a","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def url_quote(val):"},{"line_number":472,"context_line":"    return urllib.parse.quote(str(val))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Boxs%3D","line":472,"in_reply_to":"AAAAUH%2F%2FMIg%3D","updated":"2014-01-23 17:17:25.000000000","message":"i vote that the tests are wrong then :( i\u0027d rather fix that first and not have str() here... thoughts?","commit_id":"6206182d708172c4629239e6d63eb88324b9c2cc"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c04f9bc9f811149f31964c272222e1a587ea676a","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def url_quote(val):"},{"line_number":472,"context_line":"    return urllib.parse.quote(str(val))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FMIg%3D","line":472,"in_reply_to":"AAAAUH%2F%2Fctk%3D","updated":"2014-01-16 16:12:09.000000000","message":"There\u0027s several tests that pass an int as the ID, and urllib.parse.quote doesn\u0027t support taking an int argument. Here\u0027s an example: http://git.openstack.org/cgit/openstack/python-keystoneclient/tree/keystoneclient/tests/v2_0/test_roles.py#n63","commit_id":"6206182d708172c4629239e6d63eb88324b9c2cc"}],"keystoneclient/v2_0/roles.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"df7e6708a91ecae0dd4895ccbb77c8f604986bb7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    resource_class \u003d Role"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get(self, role):"},{"line_number":34,"context_line":"        path \u003d \"/OS-KSADM/roles/%s\" % base.url_quote(str(base.getid(role)))"},{"line_number":35,"context_line":"        return self._get(path, \"role\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def create(self, name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_1d4f426c","line":34,"updated":"2014-06-04 13:44:54.000000000","message":"str?","commit_id":"49b6a5195b01b3cbbb55383675d0cdfc272f4751"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b9b01a7cfac8b90c5b6a9c58fe99f2958f2d540d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    resource_class \u003d Role"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get(self, role):"},{"line_number":34,"context_line":"        path \u003d \"/OS-KSADM/roles/%s\" % base.url_quote(str(base.getid(role)))"},{"line_number":35,"context_line":"        return self._get(path, \"role\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def create(self, name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_222aeb90","line":34,"in_reply_to":"1ae5cdf2_1d4f426c","updated":"2014-08-04 21:15:22.000000000","message":"this obj.id or obj.uuid should never be a int, should it? Or is this for the case were we don\u0027t have obj.id or obj.uuid, and what we get back is the actual obj we passed in, role?","commit_id":"49b6a5195b01b3cbbb55383675d0cdfc272f4751"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d8ccae0acd9658f3a513278dc731947f4268be3d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        role_id \u003d base.getid(role)"},{"line_number":88,"context_line":"        if tenant:"},{"line_number":89,"context_line":"            route \u003d \"/tenants/%s/users/%s/roles/OS-KSADM/%s\""},{"line_number":90,"context_line":"            params \u003d (base.getid(tenant), base.url_quote(user_id),"},{"line_number":91,"context_line":"                      base.url_quote(role_id))"},{"line_number":92,"context_line":"            return self._delete(route % params)"},{"line_number":93,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_8d9ae712","line":90,"updated":"2014-06-30 22:52:01.000000000","message":"We don\u0027t need to URL quote the tenant id here?","commit_id":"49b6a5195b01b3cbbb55383675d0cdfc272f4751"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d8ccae0acd9658f3a513278dc731947f4268be3d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            return self._delete(route % params)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            route \u003d \"/users/%s/roles/OS-KSADM/%s\""},{"line_number":95,"context_line":"            params \u003d (base.url_quote(user_id), base.url_quote(role_id))"},{"line_number":96,"context_line":"            return self._delete(route % params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_ed88c3c8","line":95,"updated":"2014-06-30 22:52:01.000000000","message":"We don\u0027t need to URL quote the user id here?","commit_id":"49b6a5195b01b3cbbb55383675d0cdfc272f4751"}],"keystoneclient/v3/projects.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"df7e6708a91ecae0dd4895ccbb77c8f604986bb7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        If ``**kwargs`` are provided, then filter projects with"},{"line_number":73,"context_line":"        attributes matching ``**kwargs``."},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        base_url \u003d \u0027/users/%s\u0027 % base.getid(user) if user else None"},{"line_number":76,"context_line":"        return super(ProjectManager, self).list("},{"line_number":77,"context_line":"            base_url\u003dbase_url,"},{"line_number":78,"context_line":"            domain_id\u003dbase.getid(domain),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_5d6c6ad0","side":"PARENT","line":75,"updated":"2014-06-04 13:44:54.000000000","message":"the ternary is terribly unreadable here :(","commit_id":"4b36da79f155716156ba05ffcf71edd3bd8fe7ce"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b9b01a7cfac8b90c5b6a9c58fe99f2958f2d540d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        attributes matching ``**kwargs``."},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        base_url \u003d (\u0027/users/%s\u0027 % base.url_quote(base.getid(user)) if user"},{"line_number":76,"context_line":"                    else None)"},{"line_number":77,"context_line":"        return super(ProjectManager, self).list("},{"line_number":78,"context_line":"            base_url\u003dbase_url,"},{"line_number":79,"context_line":"            domain_id\u003dbase.getid(domain),"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_3dddac6d","line":76,"updated":"2014-08-04 21:15:22.000000000","message":"what about? \n\nbase_url \u003d None\nif user:\n    base_url \u003d (\u0027/users/%s\u0027 % base.url_quote(base.getid(user))\n\nreturn super(ProjectManager, self).list(\n    base_url\u003dbase_url, \n    ...\n    ...","commit_id":"49b6a5195b01b3cbbb55383675d0cdfc272f4751"}]}
