)]}'
{"keystoneclient/httpclient.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7222e3c5bb6cb0f3025304db126c505b5d57b75d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    @property"},{"line_number":92,"context_line":"    def auth_url(self):"},{"line_number":93,"context_line":"        \"\"\"Provide the auth_url to managers."},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        return self.session.get_endpoint(interface\u003d\u0027auth\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def request(self, url, method, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_10a2dffc","line":94,"updated":"2014-07-11 19:41:54.000000000","message":"maybe not put this on it\u0027s own line","commit_id":"88bceebe807b8b63fcbe250cb96ab60b1fd5ab08"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1290e042c2da632659543d096bbd3a76438f171a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        Wrapper around requests.request to handle tasks such as"},{"line_number":101,"context_line":"        setting headers, JSON encoding/decoding, and error handling."},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        kwargs.setdefault(\u0027authenticated\u0027, False)"},{"line_number":104,"context_line":"        return super(_KeystoneAdapter, self).request(url, method, **kwargs)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def _cs_request(self, url, method, management\u003dTrue, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_10f57f56","line":103,"updated":"2014-07-11 20:11:08.000000000","message":"why is this here? add a comment.","commit_id":"88bceebe807b8b63fcbe250cb96ab60b1fd5ab08"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4b04339f73c19f59d573ad21f750788d777f1612","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def _cs_request(self, url, method, management\u003dTrue, **kwargs):"},{"line_number":107,"context_line":"        \"\"\"Makes an authenticated request to keystone endpoint by"},{"line_number":108,"context_line":"        concatenating self.management_url and url and passing in method and"},{"line_number":109,"context_line":"        any associated kwargs."},{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        # NOTE(jamielennox): remember that if you use the legacy client mode"},{"line_number":112,"context_line":"        # (you create a client without a session) then this HTTPClient object"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_70debb6e","line":109,"updated":"2014-07-11 19:45:58.000000000","message":"Isn\u0027t there meant to be a single line as a summary, followed by a blank line and a following paragraph?","commit_id":"88bceebe807b8b63fcbe250cb96ab60b1fd5ab08"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1290e042c2da632659543d096bbd3a76438f171a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # NOTE(jamielennox): remember that if you use the legacy client mode"},{"line_number":112,"context_line":"        # (you create a client without a session) then this HTTPClient object"},{"line_number":113,"context_line":"        # is the auth plugin you are using. Values in the endpoint_filter may"},{"line_number":114,"context_line":"        # be ignored and you should look at get_endpoint to figure out what."},{"line_number":115,"context_line":"        interface \u003d \u0027admin\u0027 if management else \u0027public\u0027"},{"line_number":116,"context_line":"        endpoint_filter \u003d kwargs.setdefault(\u0027endpoint_filter\u0027, {})"},{"line_number":117,"context_line":"        endpoint_filter.setdefault(\u0027interface\u0027, interface)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_d07b07bc","line":114,"updated":"2014-07-11 20:11:08.000000000","message":"is there supposed to be something after \"what\"? what endpoint to use?","commit_id":"88bceebe807b8b63fcbe250cb96ab60b1fd5ab08"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return requests.request(*args, **kwargs)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class _KeystoneAdapter(adapter.LegacyJsonAdapter):"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":91,"context_line":"        kwargs.setdefault(\u0027interface\u0027, \u0027public\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_99214da0","line":88,"updated":"2014-09-16 00:56:46.000000000","message":"This class could use a docstring to explain what it\u0027s for.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def user_id(self):"},{"line_number":96,"context_line":"        \"\"\"Best effort to retrieve the user_id from the plugin."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        Some managers rely on being able to get the currently authenticated"},{"line_number":99,"context_line":"        user id. This is a problem when we are trying to abstract away the"},{"line_number":100,"context_line":"        details of an auth plugin."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_beb19790","line":98,"updated":"2014-09-16 00:56:46.000000000","message":"provide an example of a manager that relies on this so readers have some idea.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        # the identity plugin case"},{"line_number":107,"context_line":"        if isinstance(self.session.auth, base_identity.BaseIdentityPlugin):"},{"line_number":108,"context_line":"            return self.session.auth.get_access(self.session).user_id"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        # the case that is tested by our unit tests where you just set user_id"},{"line_number":111,"context_line":"        # on an otherwise unauthenticated client and expect that to work."}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_7e42cf68","line":108,"updated":"2014-09-16 00:56:46.000000000","message":"seems like duck typing should be used here... just call self.session.auth.get_access(self.session).user_id and if you get an AttributeError it didn\u0027t work and wasn\u0027t a BaseIdentityPlugin, otherwise it was.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if isinstance(self.session.auth, base_identity.BaseIdentityPlugin):"},{"line_number":108,"context_line":"            return self.session.auth.get_access(self.session).user_id"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        # the case that is tested by our unit tests where you just set user_id"},{"line_number":111,"context_line":"        # on an otherwise unauthenticated client and expect that to work."},{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            return self.session.auth.user_id"}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_9e6e93fe","line":110,"updated":"2014-09-16 00:56:46.000000000","message":"this is only here for unit tests? I don\u0027t get it.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    def auth_url(self):"},{"line_number":121,"context_line":"        \"\"\"Provide the auth_url to managers."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        There are some managers that rely on being able to access the auth_url."},{"line_number":124,"context_line":"        This is now abstracted behind auth plugins but make it available for"},{"line_number":125,"context_line":"        them."},{"line_number":126,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_be0d1740","line":123,"updated":"2014-09-16 00:56:46.000000000","message":"provide an example of a manager that relies on it.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        endpoint_filter \u003d kwargs.setdefault(\u0027endpoint_filter\u0027, {})"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        if kwargs.pop(\u0027management\u0027, True):"},{"line_number":138,"context_line":"            endpoint_filter.setdefault(\u0027interface\u0027, \u0027admin\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return super(_KeystoneAdapter, self).request(url, method, **kwargs)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_39286185","line":138,"updated":"2014-09-16 00:56:46.000000000","message":"I don\u0027t think that callers of this method are going to expect the endpoint_filter to be modified. Make a copy first.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        self.project_domain_id \u003d None"},{"line_number":226,"context_line":"        self.project_domain_name \u003d None"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        self.auth_url \u003d None"},{"line_number":229,"context_line":"        self._endpoint \u003d None"},{"line_number":230,"context_line":"        self._management_url \u003d None"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_195b9d22","line":228,"updated":"2014-09-16 00:56:46.000000000","message":"region_name is a public member and therefore can\u0027t be removed without going through deprecation period.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        self.domain \u003d \u0027\u0027"},{"line_number":318,"context_line":"        self.debug_log \u003d debug"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.api \u003d _KeystoneAdapter(session,"},{"line_number":321,"context_line":"                                    service_type\u003d\u0027identity\u0027,"},{"line_number":322,"context_line":"                                    region_name\u003dregion_name,"},{"line_number":323,"context_line":"                                    version\u003dself.version)"}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_b942913b","line":320,"updated":"2014-09-16 00:56:46.000000000","message":"shouldn\u0027t this be called self._adapter?","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        self.debug_log \u003d debug"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.api \u003d _KeystoneAdapter(session,"},{"line_number":321,"context_line":"                                    service_type\u003d\u0027identity\u0027,"},{"line_number":322,"context_line":"                                    region_name\u003dregion_name,"},{"line_number":323,"context_line":"                                    version\u003dself.version)"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_d93d95bc","line":321,"updated":"2014-09-16 00:56:46.000000000","message":"I\u0027d expect the default service_type for KeystoneAdapter to be identity.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8ced7625db19b075bf4425dfc1728aa1da91b2b","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        raise NotImplementedError"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    # DEPRECATIONS: The following methods are no longer directly supported"},{"line_number":625,"context_line":"    #               but maintained for compatibility purposes."},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def serialize(self, entity):"},{"line_number":628,"context_line":"        return jsonutils.dumps(entity)"}],"source_content_type":"text/x-python","patch_set":33,"id":"fa98f980_394f816c","line":625,"updated":"2014-09-16 00:56:46.000000000","message":"It doesn\u0027t do any good to have a comment here that the methods are deprecated. They need to report that they\u0027re deprecated when they\u0027re called, and we have to document in release notes that they\u0027re deprecated.","commit_id":"e5829ac3955519d853affd2778c3459e3e94ac76"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"54bad933a96f17f406fdc18890eaa31efdde25a0","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        Perform a best attempt to fetch this data. It will work in the legacy"},{"line_number":111,"context_line":"        case and with identity plugins and be None otherwise which is the same"},{"line_number":112,"context_line":"        as the historical behaviour."},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        # the identity plugin case"},{"line_number":115,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_a1ead70c","line":112,"updated":"2014-10-23 01:19:54.000000000","message":"(nit) change \"behaviour\" to \"behavior\".","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50714749d91403d0d0b39f27ad483d3f089f445b","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        Perform a best attempt to fetch this data. It will work in the legacy"},{"line_number":111,"context_line":"        case and with identity plugins and be None otherwise which is the same"},{"line_number":112,"context_line":"        as the historical behaviour."},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        # the identity plugin case"},{"line_number":115,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_4829d588","line":112,"in_reply_to":"9aa7fdbe_a1ead70c","updated":"2014-10-28 14:55:39.000000000","message":"Done. Even though it triggers my spell check now.","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"54bad933a96f17f406fdc18890eaa31efdde25a0","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        self.project_domain_id \u003d None"},{"line_number":215,"context_line":"        self.project_domain_name \u003d None"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.auth_url \u003d None"},{"line_number":218,"context_line":"        self._endpoint \u003d None"},{"line_number":219,"context_line":"        self._management_url \u003d None"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_81e31332","line":217,"updated":"2014-10-23 01:19:54.000000000","message":"removing a public property isn\u0027t backwards compatible.","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50714749d91403d0d0b39f27ad483d3f089f445b","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        self.project_domain_id \u003d None"},{"line_number":215,"context_line":"        self.project_domain_name \u003d None"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.auth_url \u003d None"},{"line_number":218,"context_line":"        self._endpoint \u003d None"},{"line_number":219,"context_line":"        self._management_url \u003d None"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_25483cb2","line":217,"in_reply_to":"9aa7fdbe_81e31332","updated":"2014-10-28 14:55:39.000000000","message":"it\u0027s being handled by getattr below.","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"54bad933a96f17f406fdc18890eaa31efdde25a0","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        \"\"\""},{"line_number":612,"context_line":"        raise NotImplementedError"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    # DEPRECATIONS: The following methods are no longer directly supported"},{"line_number":615,"context_line":"    #               but maintained for compatibility purposes."},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    def serialize(self, entity):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_61bf0ffc","line":614,"updated":"2014-10-23 01:19:54.000000000","message":"These aren\u0027t really deprecated unless the docstrings say they are. We can\u0027t expect developers to read the code to know if something is deprecated or not.\n\nAlso, new deprecations should be documented in a blueprint or spec so that developers can track and change their code.","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50714749d91403d0d0b39f27ad483d3f089f445b","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        \"\"\""},{"line_number":612,"context_line":"        raise NotImplementedError"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    # DEPRECATIONS: The following methods are no longer directly supported"},{"line_number":615,"context_line":"    #               but maintained for compatibility purposes."},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    def serialize(self, entity):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_c83ce5ca","line":614,"in_reply_to":"9aa7fdbe_61bf0ffc","updated":"2014-10-28 14:55:39.000000000","message":"Done","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"54bad933a96f17f406fdc18890eaa31efdde25a0","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        Wrapper around requests.request to handle tasks such as"},{"line_number":624,"context_line":"        setting headers, JSON encoding/decoding, and error handling."},{"line_number":625,"context_line":"        \"\"\""},{"line_number":626,"context_line":"        # NOTE(jamielennox): This is deprecated and is no longer a part of the"},{"line_number":627,"context_line":"        # standard client request path. It now goes via the adapter instead."},{"line_number":628,"context_line":"        kwargs.setdefault(\u0027authenticated\u0027, False)"},{"line_number":629,"context_line":"        return self._adapter.request(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_e1593fff","line":626,"updated":"2014-10-23 01:19:54.000000000","message":"Same comment about deprecation here. It needs to be in the docstring.","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50714749d91403d0d0b39f27ad483d3f089f445b","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        Wrapper around requests.request to handle tasks such as"},{"line_number":624,"context_line":"        setting headers, JSON encoding/decoding, and error handling."},{"line_number":625,"context_line":"        \"\"\""},{"line_number":626,"context_line":"        # NOTE(jamielennox): This is deprecated and is no longer a part of the"},{"line_number":627,"context_line":"        # standard client request path. It now goes via the adapter instead."},{"line_number":628,"context_line":"        kwargs.setdefault(\u0027authenticated\u0027, False)"},{"line_number":629,"context_line":"        return self._adapter.request(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":34,"id":"9aa7fdbe_6805b90f","line":626,"in_reply_to":"9aa7fdbe_e1593fff","updated":"2014-10-28 14:55:39.000000000","message":"Done","commit_id":"fdd3d073b479d0398be86e68c3eda348429ba283"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8e117a8db134ee8ba258d1bab38d0e0f09cf654","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        # there is a case that we explicity allow (tested by our unit tests)"},{"line_number":122,"context_line":"        # that says you should be able to set the user_id on a legacy client"},{"line_number":123,"context_line":"        # and it should overwrite the one retrieved via authentication. If it\u0027s"},{"line_number":124,"context_line":"        # a legacy then self.session.auth is a client and we retrieve user_id."},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            return self.session.auth.user_id"},{"line_number":127,"context_line":"        except AttributeError:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a890539_872ef540","line":124,"updated":"2014-12-01 01:02:43.000000000","message":"change \"legacy\" to \"legacy client\"","commit_id":"b0e68b06b3c5da2da4307bd172708317d8b0428c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8e117a8db134ee8ba258d1bab38d0e0f09cf654","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        \"\"\""},{"line_number":725,"context_line":"        return self._cs_request(url, \u0027DELETE\u0027, **kwargs)"},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"    # DEPRECATIONS: The following methods are no longer directly supported"},{"line_number":728,"context_line":"    #               but maintained for compatibility purposes."},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    deprecated_session_variables \u003d {\u0027original_ip\u0027: None,"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a890539_2719c122","line":727,"updated":"2014-12-01 01:02:43.000000000","message":"could change \"methods\" to \"methods and attribute\"","commit_id":"b0e68b06b3c5da2da4307bd172708317d8b0428c"}],"keystoneclient/v3/contrib/oauth1/request_tokens.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8e117a8db134ee8ba258d1bab38d0e0f09cf654","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                     client_secret\u003dconsumer_secret,"},{"line_number":64,"context_line":"                                     signature_method\u003doauth1.SIGNATURE_HMAC,"},{"line_number":65,"context_line":"                                     callback_uri\u003d\"oob\")"},{"line_number":66,"context_line":"        url \u003d self.api.get_endpoint(interface\u003dauth.AUTH_INTERFACE).rstrip(\"/\")"},{"line_number":67,"context_line":"        url, headers, body \u003d oauth_client.sign(url + endpoint,"},{"line_number":68,"context_line":"                                               http_method\u003d\u0027POST\u0027,"},{"line_number":69,"context_line":"                                               headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a890539_27f0e1c8","line":66,"updated":"2014-12-01 01:02:43.000000000","message":"could have a self.api.get_auth_endoint() method (or even self.get_auth_endpoint()) then wouldn\u0027t need need to pass the interface on all these.","commit_id":"b0e68b06b3c5da2da4307bd172708317d8b0428c"}]}
