)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"59619e09c73289c22e9baf86b84e6e85a0fba366","unresolved":false,"context_lines":[{"line_number":7,"context_line":"change get_user_roles in RoleAssignmentV2 to resolve ProjectNotFound"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"conditioning of tenant_id checked"},{"line_number":10,"context_line":"Fixes Bug #1507920"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iae710915a912558057b942d3ca62ab380ce26003"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a29b11f_832a0f7d","line":10,"updated":"2015-10-20 20:46:34.000000000","message":"change this to:\n\n  Closes-Bug: #1507920","commit_id":"9be439427a9be846a14440a284021965441d7d11"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0b0f12dc954200928ec2f5ba437e70c88c639b05","unresolved":false,"context_lines":[{"line_number":7,"context_line":"get_user_roles in RoleAssignmentV2 to resolve ProjectNotFound"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"get_user_roles in RoleAssignmentV2 to resolve ProjectNotFound,"},{"line_number":10,"context_line":"conditioning of tenant_id checked"},{"line_number":11,"context_line":"Fixes Bug #1507920"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iae710915a912558057b942d3ca62ab380ce26003"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a26ad4f_1dae5381","line":10,"updated":"2015-10-31 13:17:59.000000000","message":"Just say something like \"should raise the exception if project/tenant id is not given when getting role for specific user, this will let end user know what is missed or happened instead of failing silently.\"","commit_id":"c842af36fed3decffe4b46e5309e97a507c1ec17"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0b0f12dc954200928ec2f5ba437e70c88c639b05","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"get_user_roles in RoleAssignmentV2 to resolve ProjectNotFound,"},{"line_number":10,"context_line":"conditioning of tenant_id checked"},{"line_number":11,"context_line":"Fixes Bug #1507920"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iae710915a912558057b942d3ca62ab380ce26003"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1a26ad4f_3db30feb","line":11,"updated":"2015-10-31 13:17:59.000000000","message":"change to Closes-Bug: #1507920","commit_id":"c842af36fed3decffe4b46e5309e97a507c1ec17"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dc88202cc12a07330f05e3253569b6e0efbb9b5c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"get_user_roles in RoleAssignmentV2 to resolve ProjectNotFound"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if u do not check the tenant_id while tenant_id is None,"},{"line_number":10,"context_line":"it will raise TypeError because object of type \u0027NoneType\u0027 has no len,"},{"line_number":11,"context_line":"we need conditioning of tenant_id checked"},{"line_number":12,"context_line":"Fixes Bug #1507920"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a26ad4f_8d39b9d9","line":9,"updated":"2015-11-02 14:47:01.000000000","message":"s/if/If/\n\ns/u/you/","commit_id":"b9225df0eccc2a30c8128d814609a7a98d51e74a"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dc88202cc12a07330f05e3253569b6e0efbb9b5c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if u do not check the tenant_id while tenant_id is None,"},{"line_number":10,"context_line":"it will raise TypeError because object of type \u0027NoneType\u0027 has no len,"},{"line_number":11,"context_line":"we need conditioning of tenant_id checked"},{"line_number":12,"context_line":"Fixes Bug #1507920"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iae710915a912558057b942d3ca62ab380ce26003"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a26ad4f_6d745d67","line":11,"updated":"2015-11-02 14:47:01.000000000","message":"For the last part of the sentence maybe this would work better \u0027we need a condition that checks tenant_id.\u0027","commit_id":"b9225df0eccc2a30c8128d814609a7a98d51e74a"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dc88202cc12a07330f05e3253569b6e0efbb9b5c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"if u do not check the tenant_id while tenant_id is None,"},{"line_number":10,"context_line":"it will raise TypeError because object of type \u0027NoneType\u0027 has no len,"},{"line_number":11,"context_line":"we need conditioning of tenant_id checked"},{"line_number":12,"context_line":"Fixes Bug #1507920"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iae710915a912558057b942d3ca62ab380ce26003"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a26ad4f_87c99a5b","line":12,"updated":"2015-11-02 14:47:01.000000000","message":"As mentioned by Dave in patch set 7 this needs to be \u0027Closes-Bug: #1507920\u0027   as per this doc: https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"b9225df0eccc2a30c8128d814609a7a98d51e74a"}],"keystone/assignment/controllers.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"98f7c09cd847b88e69746fc994624e92ffc076a6","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027identity_api\u0027, \u0027token_provider_api\u0027)"},{"line_number":40,"context_line":"class TenantAssignment(controller.V2Controller):"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    \"\"\"The V2 Project APIs that are processing assignments.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @controller.v2_deprecated"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_d5ae8884","line":41,"updated":"2015-10-20 16:12:42.000000000","message":"I would change these back since they are not related to your patch","commit_id":"ec0ef083a312e9fede1dbedbfd7cf6e354695d66"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"59619e09c73289c22e9baf86b84e6e85a0fba366","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027identity_api\u0027, \u0027token_provider_api\u0027)"},{"line_number":40,"context_line":"class TenantAssignment(controller.V2Controller):"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    \"\"\"The V2 Project APIs that are processing assignments.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @controller.v2_deprecated"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_63001302","line":41,"updated":"2015-10-20 20:46:34.000000000","message":"undo these unrelated changes to docstrings","commit_id":"9be439427a9be846a14440a284021965441d7d11"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ae1f6f6ecccf3db64ace178ba5becf40cb05e29","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        \"\"\""},{"line_number":143,"context_line":"        self.assert_admin(context)"},{"line_number":144,"context_line":"        if tenant_id is None:"},{"line_number":145,"context_line":"            raise exception.NotImplemented("},{"line_number":146,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":147,"context_line":"        roles \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":148,"context_line":"            user_id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_f58f04ca","line":145,"updated":"2015-10-20 16:29:40.000000000","message":"I think it is a valid point Lance pointed out making this a BadRequest instead of NotImplemented.","commit_id":"9be439427a9be846a14440a284021965441d7d11"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0b0f12dc954200928ec2f5ba437e70c88c639b05","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        if tenant_id is None:"},{"line_number":142,"context_line":"            raise exception.ProjectNotFound("},{"line_number":143,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":144,"context_line":"        roles \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":145,"context_line":"            user_id, tenant_id)"},{"line_number":146,"context_line":"        return {\u0027roles\u0027: [self.role_api.get_role(x)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a26ad4f_3d9c6f5c","line":143,"updated":"2015-10-31 13:17:59.000000000","message":"change to \"raise exception.NotImplemented\" to consistent with L160.  \n\nNormally, ProjectNotFound is used when you know the project id but just cannot get it from the backend driver.","commit_id":"c842af36fed3decffe4b46e5309e97a507c1ec17"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"7e0b77f9114a7139d1ede6b3e538c2c5cf4cba79","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        if tenant_id is None:"},{"line_number":142,"context_line":"            raise exception.ProjectNotFound("},{"line_number":143,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":144,"context_line":"        roles \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":145,"context_line":"            user_id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_6f9d4cbb","line":142,"updated":"2015-11-01 02:34:20.000000000","message":"for what reason we it should be ProjectNotFound here while it\u0027s NotImplemented in L159?","commit_id":"b9225df0eccc2a30c8128d814609a7a98d51e74a"},{"author":{"_account_id":16246,"name":"zouyee","email":"zounengren@cmss.chinamobile.com","username":"zouyee"},"change_message_id":"fdd691e724bdf046e08180e6fa9ee97815deba95","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        if tenant_id is None:"},{"line_number":142,"context_line":"            raise exception.ProjectNotFound("},{"line_number":143,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":144,"context_line":"        roles \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":145,"context_line":"            user_id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a26ad4f_af5364e1","line":142,"in_reply_to":"1a26ad4f_6f9d4cbb","updated":"2015-11-01 04:19:22.000000000","message":"First，thanks for your question. In my mind,  we could replace ProjectNotFound with NotImplemented or any other exception,  the exception of ProjectNotFound indicate tenant_id need to be here which serve the present , the exception of NotImplement in L159 focus on the future","commit_id":"b9225df0eccc2a30c8128d814609a7a98d51e74a"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"db45919d7ed3687a2a311225a6cbe3dd9b115282","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        if tenant_id is None:"},{"line_number":142,"context_line":"            raise exception.ProjectNotFound("},{"line_number":143,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":144,"context_line":"        roles \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":145,"context_line":"            user_id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa80f949_9d48765d","line":142,"updated":"2015-11-03 19:27:23.000000000","message":"I think Dave brought up a very good point, on lines 159 and 178 they both use NotImplemented while you use ProjectNotFound.  I would say since it is not supported in v2 and supported in v3 \u0027NotImplemented\u0027 makes the most sense to me.","commit_id":"1c90648572dc7ef71766ec720b207a72e358f133"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"de32dd9782f94b13e7a1c771fda28b5db0b775d0","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        if tenant_id is None:"},{"line_number":142,"context_line":"            raise exception.ProjectNotFound("},{"line_number":143,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"},{"line_number":144,"context_line":"        roles \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":145,"context_line":"            user_id, tenant_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa80f949_71f139cd","line":142,"in_reply_to":"fa80f949_9d48765d","updated":"2015-11-03 20:50:34.000000000","message":"Actually I think this may be all full of fail. A 501 is not the correct response because that\u0027s at the server level (I\u0027ve had this conversation with the API-WG). The correct response would probably be some sort of 404 because the resource is not available. I would rather see a 403, but this was implemented as a URL driven resource. Is there any reason we carry this route at all in v2?","commit_id":"1c90648572dc7ef71766ec720b207a72e358f133"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f2060969b9ecab3b846fa0505152b42ff5e0d63f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        # NOTE(davechen): Router without project id is defined but it\u0027s"},{"line_number":142,"context_line":"        # currently not implemented."},{"line_number":143,"context_line":"        if tenant_id is None:"},{"line_number":144,"context_line":"            raise exception.NotImplemented("},{"line_number":145,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa80f949_dfbfbdce","line":142,"updated":"2015-11-04 09:54:53.000000000","message":"nit...maybe say \"Router without project id is defined, but we don\u0027t plan on implementing this.\"","commit_id":"e08e75e03d55c1c34f285cc972d17cafd2290e59"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0002dd8fce3e656a29ed52b9cad0babbb544ca90","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        self.assert_admin(context)"},{"line_number":141,"context_line":"        # NOTE(davechen): Router without project id is defined but it\u0027s"},{"line_number":142,"context_line":"        # currently not implemented."},{"line_number":143,"context_line":"        if tenant_id is None:"},{"line_number":144,"context_line":"            raise exception.NotImplemented("},{"line_number":145,"context_line":"                message\u003d_(\u0027User roles not supported: tenant_id required\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa80f949_43c20f87","line":142,"in_reply_to":"fa80f949_dfbfbdce","updated":"2015-11-04 13:09:08.000000000","message":"Done","commit_id":"e08e75e03d55c1c34f285cc972d17cafd2290e59"}],"keystone/tests/unit/test_v2.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"2279e8bf02ae6cdd7509dd9d05b16a0295339076","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                \u0027tenant_id\u0027: None,"},{"line_number":281,"context_line":"                \u0027user_id\u0027: self.user_foo[\u0027id\u0027],"},{"line_number":282,"context_line":"            },"},{"line_number":283,"context_line":"            token\u003dtoken, expected_status\u003dhttp_client.NOT_FOUND)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_get_user(self):"},{"line_number":286,"context_line":"        token \u003d self.get_scoped_token()"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa80f949_7d63471b","line":283,"updated":"2015-11-04 01:25:42.000000000","message":"I am wondering how you can get this testcase passed? you are expect \"http_client.NOT_FOUND\" but you are raising \"exception.NotImplemented\" when tenant id is none.","commit_id":"953af88409dfb8f3057d68c1d30d94bfd55e09cb"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"55d7996a16e7368a63d7b9d78b3d362c71d09f6f","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    def test_get_user_roles_without_tenant(self):"},{"line_number":277,"context_line":"        tenant_id \u003d self.tenant_bar[\u0027id\u0027]"},{"line_number":278,"context_line":"        self.assertRaises(TypeError, self.resource_api.get_project, tenant_id)"},{"line_number":279,"context_line":" "},{"line_number":280,"context_line":"    def test_get_user(self):"},{"line_number":281,"context_line":"        token \u003d self.get_scoped_token()"},{"line_number":282,"context_line":"        r \u003d self.admin_request("}],"source_content_type":"text/x-python","patch_set":13,"id":"fa80f949_c34e10c1","line":279,"updated":"2015-11-04 02:46:58.000000000","message":"your testcase should test the code you modified, saying, If you want the code to raise exception.NotImplemented, the testcase should expect the same exception when you call the API with tenant id is none.\n\npls keep in mind, status code of exception.NotImplemented is 501, httpclient.NOT_FOUND is 404, and why you assert it will raise TypeError here.\n\nalso, pls remove the whitespace, or else it will not pass the pep8 in gating.\n\nIf you need any help, you can also ask for help in the IRC.","commit_id":"3c9c76cf9d0bf13bbf799b21b92ca10d1aff062c"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a7e565e2b9798780fffc9d88890f003fb9bd7709","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def test_get_user_roles_without_tenant(self):"},{"line_number":277,"context_line":"        token \u003d self.get_scoped_token()"},{"line_number":278,"context_line":"        if self.tenant_bar[\u0027id\u0027]:"},{"line_number":279,"context_line":"            return"},{"line_number":280,"context_line":"        self.admin_request("},{"line_number":281,"context_line":"            method\u003d\u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_49031e74","line":278,"updated":"2015-11-04 07:13:26.000000000","message":"self.tenant_bar[\u0027id\u0027] is not None, so your testcase never got executed.","commit_id":"fd6bf30f551bdbfc6b06ca577a9d0cba6b10415e"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9db705a597232cbe2eb85445831a225a231d47fa","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    def test_get_user_roles_without_tenant(self):"},{"line_number":277,"context_line":"        token \u003d self.get_scoped_token()"},{"line_number":278,"context_line":"        if self.tenant_bar[\u0027id\u0027]:"},{"line_number":279,"context_line":"            return"},{"line_number":280,"context_line":"        self.admin_request("},{"line_number":281,"context_line":"            method\u003d\u0027GET\u0027,"},{"line_number":282,"context_line":"            path\u003d\u0027/2.0/tenants/%(tenant_id)s/users/%(user_id)s/roles\u0027 % {"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_89526612","line":279,"updated":"2015-11-04 06:55:19.000000000","message":"why need these?","commit_id":"fd6bf30f551bdbfc6b06ca577a9d0cba6b10415e"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a7e565e2b9798780fffc9d88890f003fb9bd7709","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        if self.tenant_bar[\u0027id\u0027]:"},{"line_number":279,"context_line":"            return"},{"line_number":280,"context_line":"        self.admin_request("},{"line_number":281,"context_line":"            method\u003d\u0027GET\u0027,"},{"line_number":282,"context_line":"            path\u003d\u0027/2.0/tenants/%(tenant_id)s/users/%(user_id)s/roles\u0027 % {"},{"line_number":283,"context_line":"                \u0027tenant_id\u0027: None,"},{"line_number":284,"context_line":"                \u0027user_id\u0027: self.user_foo[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_69ddc213","line":281,"updated":"2015-11-04 07:13:26.000000000","message":"\u0027GET\u0027 is default, you do not need to set it explictly.","commit_id":"fd6bf30f551bdbfc6b06ca577a9d0cba6b10415e"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9db705a597232cbe2eb85445831a225a231d47fa","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                \u0027user_id\u0027: self.user_foo[\u0027id\u0027],"},{"line_number":285,"context_line":"            },"},{"line_number":286,"context_line":"            token\u003dtoken, expected_status\u003dhttp_client.NOT_IMPLEMENTED)"},{"line_number":287,"context_line":"     "},{"line_number":288,"context_line":"    def test_get_user(self):"},{"line_number":289,"context_line":"        token \u003d self.get_scoped_token()"},{"line_number":290,"context_line":"        r \u003d self.admin_request("}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_0938b6d2","line":287,"updated":"2015-11-04 06:55:19.000000000","message":"you won\u0027t get your code pass the pep8 testing with these whitespace.","commit_id":"fd6bf30f551bdbfc6b06ca577a9d0cba6b10415e"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9db705a597232cbe2eb85445831a225a231d47fa","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            },"},{"line_number":294,"context_line":"            token\u003dtoken)"},{"line_number":295,"context_line":"        self.assertValidUserResponse(r)"},{"line_number":296,"context_line":"    "},{"line_number":297,"context_line":"    def test_get_user_by_name(self):"},{"line_number":298,"context_line":"        token \u003d self.get_scoped_token()"},{"line_number":299,"context_line":"        r \u003d self.admin_request("}],"source_content_type":"text/x-python","patch_set":15,"id":"fa80f949_c9314eee","line":296,"updated":"2015-11-04 06:55:19.000000000","message":"revert it back, it\u0027s irrelevant.","commit_id":"fd6bf30f551bdbfc6b06ca577a9d0cba6b10415e"}]}
