)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jamie Lennox \u003cjamielennox@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-06 13:20:37 +1000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Manually handle redirects in session"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Requests handles redirects as a browser would, which has the problem"},{"line_number":10,"context_line":"that forwarding a POST will convert it to a GET. This is not necessarily"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F9FQ0%3D","line":7,"updated":"2013-12-16 23:56:26.000000000","message":"Suggest change to say \"Handle redirects in session\" because we were manually handling redirects before.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Manually handle redirects in session"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Requests handles redirects as a browser would, which has the problem"},{"line_number":10,"context_line":"that forwarding a POST will convert it to a GET. This is not necessarily"},{"line_number":11,"context_line":"intuitive for an API. It has been handled manually in the client code"},{"line_number":12,"context_line":"but move this into the session for re-use and improve it so that we"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F9FQU%3D","line":9,"updated":"2013-12-16 23:56:26.000000000","message":"suggest change \"Requests\" to \"the requests library\"","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Requests handles redirects as a browser would, which has the problem"},{"line_number":10,"context_line":"that forwarding a POST will convert it to a GET. This is not necessarily"},{"line_number":11,"context_line":"intuitive for an API. It has been handled manually in the client code"},{"line_number":12,"context_line":"but move this into the session for re-use and improve it so that we"},{"line_number":13,"context_line":"always manually handle redirecting."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I24596a9c39cc29db28a66c3053ef3954b33abf90"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F9FP4%3D","line":12,"updated":"2013-12-16 23:56:26.000000000","message":"suggest split improvements out from move.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"}],"keystoneclient/session.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    REDIRECT_STATI \u003d [301, 302, 303, 305, 307]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"},{"line_number":39,"context_line":"                 timeout\u003dNone, debug\u003dFalse, user_agent\u003dNone, redirect\u003d2):"},{"line_number":40,"context_line":"        \"\"\"Maintains client communication state and common functionality."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        As much as possible the parameters to this class reflect and are passed"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FOg%3D","line":39,"updated":"2013-12-16 23:56:26.000000000","message":"why 2? HTTP 1.1 indicates it should be unlimited and check for detect loop. -- http://tools.ietf.org/html/rfc2616#section-10.3","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    REDIRECT_STATI \u003d [301, 302, 303, 305, 307]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"},{"line_number":39,"context_line":"                 timeout\u003dNone, debug\u003dFalse, user_agent\u003dNone, redirect\u003d2):"},{"line_number":40,"context_line":"        \"\"\"Maintains client communication state and common functionality."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        As much as possible the parameters to this class reflect and are passed"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EVE%3D","line":39,"in_reply_to":"AAAATn%2F9FOg%3D","updated":"2013-12-17 04:49:31.000000000","message":"I\u0027ve changed this to 30 as that is what requests uses. Redirect loop detection can be figured out later - it\u0027s not something that requests does either.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                  request. If not provided a default is used."},{"line_number":64,"context_line":"                                  (optional, defaults to"},{"line_number":65,"context_line":"                                  \u0027python-keystoneclient\u0027)"},{"line_number":66,"context_line":"        :param int/bool redirect: Control the maximum number of redirections"},{"line_number":67,"context_line":"                                  that can be followed by a request. Either an"},{"line_number":68,"context_line":"                                  integer for a specific count or True/False"},{"line_number":69,"context_line":"                                  for forever/never. (optional, default to 2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FPk%3D","line":66,"updated":"2013-12-16 23:56:26.000000000","message":"(nit) change \"Control\" to \"Controls\"","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                  request. If not provided a default is used."},{"line_number":64,"context_line":"                                  (optional, defaults to"},{"line_number":65,"context_line":"                                  \u0027python-keystoneclient\u0027)"},{"line_number":66,"context_line":"        :param int/bool redirect: Control the maximum number of redirections"},{"line_number":67,"context_line":"                                  that can be followed by a request. Either an"},{"line_number":68,"context_line":"                                  integer for a specific count or True/False"},{"line_number":69,"context_line":"                                  for forever/never. (optional, default to 2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EVM%3D","line":66,"in_reply_to":"AAAATn%2F9FPk%3D","updated":"2013-12-17 04:49:31.000000000","message":"Done","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :param int/bool redirect: Control the maximum number of redirections"},{"line_number":67,"context_line":"                                  that can be followed by a request. Either an"},{"line_number":68,"context_line":"                                  integer for a specific count or True/False"},{"line_number":69,"context_line":"                                  for forever/never. (optional, default to 2)"},{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        if not session:"},{"line_number":72,"context_line":"            session \u003d requests.Session()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FMc%3D","line":69,"updated":"2013-12-16 23:56:26.000000000","message":"what is redirect\u003dNone supposed to do?","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        \"\"\"Returns if a redirect is allowed and the new redirect counter.\"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # be careful here in python True \u003d\u003d 1 and False \u003d\u003d 0"},{"line_number":188,"context_line":"        if redirect is True or redirect is False or redirect is None:"},{"line_number":189,"context_line":"            return redirect, redirect"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FMM%3D","line":188,"updated":"2013-12-16 23:56:26.000000000","message":"what is redirect is None supposed to do? __init__ docs don\u0027t say.\n\nAlso, could isinstance(redirect, bool) ?","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        \"\"\"Returns if a redirect is allowed and the new redirect counter.\"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # be careful here in python True \u003d\u003d 1 and False \u003d\u003d 0"},{"line_number":188,"context_line":"        if redirect is True or redirect is False or redirect is None:"},{"line_number":189,"context_line":"            return redirect, redirect"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EVQ%3D","line":188,"in_reply_to":"AAAATn%2F9FMM%3D","updated":"2013-12-17 04:49:31.000000000","message":"I was trying to handle the general if case where None defaults to False, but i should just make people pass what they mean.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        try:"},{"line_number":192,"context_line":"            redirect \u003d int(redirect)"},{"line_number":193,"context_line":"        except ValueError:"},{"line_number":194,"context_line":"            # Is disallow the best option here?"},{"line_number":195,"context_line":"            return False, False"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        redirect -\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FOw%3D","line":194,"updated":"2013-12-16 23:56:26.000000000","message":"I don\u0027t think so. If you can\u0027t send in the arguments in the right format then you get what you deserve.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        try:"},{"line_number":192,"context_line":"            redirect \u003d int(redirect)"},{"line_number":193,"context_line":"        except ValueError:"},{"line_number":194,"context_line":"            # Is disallow the best option here?"},{"line_number":195,"context_line":"            return False, False"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        redirect -\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EVg%3D","line":194,"in_reply_to":"AAAATn%2F9FOw%3D","updated":"2013-12-17 04:49:31.000000000","message":"I\u0027m not sure what you are suggesting, if it\u0027s not an int or a bool i should return True, True?","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        return redirect \u003e\u003d 0, redirect"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _send_request(self, url, method, redirect\u003dNone, **kwargs):"},{"line_number":201,"context_line":"        # NOTE(jamielennox): The requests lib will handle the majority of"},{"line_number":202,"context_line":"        # redirections. Where it fails is when POSTs are redirected which"},{"line_number":203,"context_line":"        # is apparently something handled differently by each browser which"},{"line_number":204,"context_line":"        # requests forces us to do the most compliant way (which we don\u0027t want)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FNU%3D","line":201,"updated":"2013-12-16 23:56:26.000000000","message":"I thought that this change makes it so that the requests lib doesn\u0027t handle any redirections?","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        return redirect \u003e\u003d 0, redirect"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _send_request(self, url, method, redirect\u003dNone, **kwargs):"},{"line_number":201,"context_line":"        # NOTE(jamielennox): The requests lib will handle the majority of"},{"line_number":202,"context_line":"        # redirections. Where it fails is when POSTs are redirected which"},{"line_number":203,"context_line":"        # is apparently something handled differently by each browser which"},{"line_number":204,"context_line":"        # requests forces us to do the most compliant way (which we don\u0027t want)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EVs%3D","line":201,"in_reply_to":"AAAATn%2F9FNU%3D","updated":"2013-12-17 04:49:31.000000000","message":"Done","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                    location \u003d resp.headers[\u0027location\u0027]"},{"line_number":226,"context_line":"                except KeyError:"},{"line_number":227,"context_line":"                    _logger.warn(\"Failed to redirect request to %s as new \""},{"line_number":228,"context_line":"                                 \"location was not provided.\", resp.url)"},{"line_number":229,"context_line":"                else:"},{"line_number":230,"context_line":"                    kwargs[\u0027redirect\u0027] \u003d redirect"},{"line_number":231,"context_line":"                    new_resp \u003d self._send_request(location, method, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FLs%3D","line":228,"updated":"2013-12-16 23:56:26.000000000","message":"seems like this should raise... I don\u0027t see the caller handling this correctly (would be at line 177).","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                    location \u003d resp.headers[\u0027location\u0027]"},{"line_number":226,"context_line":"                except KeyError:"},{"line_number":227,"context_line":"                    _logger.warn(\"Failed to redirect request to %s as new \""},{"line_number":228,"context_line":"                                 \"location was not provided.\", resp.url)"},{"line_number":229,"context_line":"                else:"},{"line_number":230,"context_line":"                    kwargs[\u0027redirect\u0027] \u003d redirect"},{"line_number":231,"context_line":"                    new_resp \u003d self._send_request(location, method, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EVw%3D","line":228,"in_reply_to":"AAAATn%2F9FLs%3D","updated":"2013-12-17 04:49:31.000000000","message":"I\u0027m not sure. It will still return the redirecting resp so the caller has a chance to handle that but i don\u0027t know what to raise.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e740dc45fbe4a120e73e3793fdd71af5361214e8","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                else:"},{"line_number":230,"context_line":"                    kwargs[\u0027redirect\u0027] \u003d redirect"},{"line_number":231,"context_line":"                    new_resp \u003d self._send_request(location, method, **kwargs)"},{"line_number":232,"context_line":"                    if not isinstance(new_resp.history, list):"},{"line_number":233,"context_line":"                        new_resp.history \u003d list(new_response.history)"},{"line_number":234,"context_line":"                    new_resp.history.insert(0, resp)"},{"line_number":235,"context_line":"                    resp \u003d new_resp"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9FLo%3D","line":232,"updated":"2013-12-16 23:56:26.000000000","message":"why wouldn\u0027t new_resp.history be a list?","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4dbecf2023076d602640a8f763aad39beb8b835e","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                else:"},{"line_number":230,"context_line":"                    kwargs[\u0027redirect\u0027] \u003d redirect"},{"line_number":231,"context_line":"                    new_resp \u003d self._send_request(location, method, **kwargs)"},{"line_number":232,"context_line":"                    if not isinstance(new_resp.history, list):"},{"line_number":233,"context_line":"                        new_resp.history \u003d list(new_response.history)"},{"line_number":234,"context_line":"                    new_resp.history.insert(0, resp)"},{"line_number":235,"context_line":"                    resp \u003d new_resp"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9EV0%3D","line":232,"in_reply_to":"AAAATn%2F9FLo%3D","updated":"2013-12-17 04:49:31.000000000","message":"requests generally returns history as a tuple, but for some reason if you set it to not redirect it has it left as a list. This seems like an oversight in requests and something that i can easily accommodate here in case it changes.","commit_id":"80d2d01355a061c8815a7c628fcbc55265d17e71"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    user_agent \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    REDIRECT_STATI \u003d [301, 302, 303, 305, 307]"},{"line_number":37,"context_line":"    DEFAULT_REDIRECT_LIMIT \u003d 30"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vr8%3D","line":36,"updated":"2013-12-20 19:10:16.000000000","message":"suggest use a tuple here since aren\u0027t going to modify it.\n\nAlso, change STATI to STATUSES","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    user_agent \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    REDIRECT_STATI \u003d [301, 302, 303, 305, 307]"},{"line_number":37,"context_line":"    DEFAULT_REDIRECT_LIMIT \u003d 30"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BYA%3D","line":36,"in_reply_to":"AAAATn%2F8vr8%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    DEFAULT_REDIRECT_LIMIT \u003d 30"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"},{"line_number":40,"context_line":"                 timeout\u003dNone, user_agent\u003dNone, redirect\u003dNone):"},{"line_number":41,"context_line":"        \"\"\"Maintains client communication state and common functionality."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        As much as possible the parameters to this class reflect and are passed"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vrg%3D","line":40,"updated":"2013-12-20 19:10:16.000000000","message":"should \"redirect\u003dNone\" be \"redirect\u003dDEFAULT_REDIRECT_LIMIT\" ?","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    DEFAULT_REDIRECT_LIMIT \u003d 30"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"},{"line_number":40,"context_line":"                 timeout\u003dNone, user_agent\u003dNone, redirect\u003dNone):"},{"line_number":41,"context_line":"        \"\"\"Maintains client communication state and common functionality."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        As much as possible the parameters to this class reflect and are passed"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BX4%3D","line":40,"in_reply_to":"AAAATn%2F8vrg%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        if self.redirect is None:"},{"line_number":143,"context_line":"            kwargs.setdefault(\u0027redirect\u0027, self.DEFAULT_REDIRECT_LIMIT)"},{"line_number":144,"context_line":"        else:"},{"line_number":145,"context_line":"            kwargs.setdefault(\u0027redirect\u0027, self.redirect)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        string_parts \u003d [\u0027curl -i\u0027]"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vpY%3D","line":145,"updated":"2013-12-20 19:10:16.000000000","message":"suggest pass redirect to _send_request like method is passed in. redirect isn\u0027t a kwarg to _send_request.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        if self.redirect is None:"},{"line_number":143,"context_line":"            kwargs.setdefault(\u0027redirect\u0027, self.DEFAULT_REDIRECT_LIMIT)"},{"line_number":144,"context_line":"        else:"},{"line_number":145,"context_line":"            kwargs.setdefault(\u0027redirect\u0027, self.redirect)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        string_parts \u003d [\u0027curl -i\u0027]"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BXg%3D","line":145,"in_reply_to":"AAAATn%2F8vpY%3D","updated":"2014-01-06 00:19:05.000000000","message":"I\u0027m not sure i agree - i think it\u0027s fine to pass things as named arguments and that positional can be used to imply a required variable rather than how it should be passed.\n\nBut done anyway.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            _logger.debug(\u0027REQ BODY: %s\u0027, data)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        resp \u003d self._send_request(url, method, **kwargs)"},{"line_number":165,"context_line":"        resp.history \u003d tuple(resp.history)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        if resp.status_code \u003e\u003d 400:"},{"line_number":168,"context_line":"            _logger.debug(\u0027Request returned failure status: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vrY%3D","line":165,"updated":"2013-12-20 19:10:16.000000000","message":"add a comment why need to do this.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            _logger.debug(\u0027REQ BODY: %s\u0027, data)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        resp \u003d self._send_request(url, method, **kwargs)"},{"line_number":165,"context_line":"        resp.history \u003d tuple(resp.history)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        if resp.status_code \u003e\u003d 400:"},{"line_number":168,"context_line":"            _logger.debug(\u0027Request returned failure status: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BXY%3D","line":165,"in_reply_to":"AAAATn%2F8vrY%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            return redirect, redirect"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        try:"},{"line_number":182,"context_line":"            redirect \u003d int(redirect)"},{"line_number":183,"context_line":"        except ValueError:"},{"line_number":184,"context_line":"            # Is disallow the best option here?"},{"line_number":185,"context_line":"            return False, False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vqw%3D","line":182,"updated":"2013-12-20 19:10:16.000000000","message":"isn\u0027t redirect either an int or a bool? checked for bool at 178 so it must be an int here, so no need to convert.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            return redirect, redirect"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        try:"},{"line_number":182,"context_line":"            redirect \u003d int(redirect)"},{"line_number":183,"context_line":"        except ValueError:"},{"line_number":184,"context_line":"            # Is disallow the best option here?"},{"line_number":185,"context_line":"            return False, False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BXU%3D","line":182,"in_reply_to":"AAAATn%2F8vqw%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            return False, False"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        redirect -\u003d 1"},{"line_number":188,"context_line":"        return redirect \u003e\u003d 0, redirect"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _send_request(self, url, method, redirect, **kwargs):"},{"line_number":191,"context_line":"        # NOTE(jamielennox): We handle redirection manually because the"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vqo%3D","line":188,"updated":"2013-12-20 19:10:16.000000000","message":"seems like this function could just as well return an int or a bool, where if false then don\u0027t redirect. It\u0027s always returning 2 of the same variable or value.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            return False, False"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        redirect -\u003d 1"},{"line_number":188,"context_line":"        return redirect \u003e\u003d 0, redirect"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _send_request(self, url, method, redirect, **kwargs):"},{"line_number":191,"context_line":"        # NOTE(jamielennox): We handle redirection manually because the"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BYM%3D","line":188,"in_reply_to":"AAAATn%2F8vqo%3D","updated":"2014-01-06 00:19:05.000000000","message":"well it\u0027s returning a bool followed by an int mostly - but it could easily be inlined and still be obvious","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return redirect \u003e\u003d 0, redirect"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _send_request(self, url, method, redirect, **kwargs):"},{"line_number":191,"context_line":"        # NOTE(jamielennox): We handle redirection manually because the"},{"line_number":192,"context_line":"        # requests lib follows some browser patterns where it will redirect"},{"line_number":193,"context_line":"        # POSTs as GETs for certain statuses which is not want we want for an"},{"line_number":194,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8voQ%3D","line":191,"updated":"2013-12-20 19:10:16.000000000","message":"suggest move this comment after line 196.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return redirect \u003e\u003d 0, redirect"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _send_request(self, url, method, redirect, **kwargs):"},{"line_number":191,"context_line":"        # NOTE(jamielennox): We handle redirection manually because the"},{"line_number":192,"context_line":"        # requests lib follows some browser patterns where it will redirect"},{"line_number":193,"context_line":"        # POSTs as GETs for certain statuses which is not want we want for an"},{"line_number":194,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BYo%3D","line":191,"in_reply_to":"AAAATn%2F8voQ%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        # POSTs as GETs for certain statuses which is not want we want for an"},{"line_number":194,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        kwargs[\u0027allow_redirects\u0027] \u003d False"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        try:"},{"line_number":199,"context_line":"            resp \u003d self.session.request(method, url, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vqY%3D","line":196,"updated":"2013-12-20 19:10:16.000000000","message":"suggest change the caller so that it always sets \u0027allow_redirect\u0027 to false in the kwargs it calls with.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        # POSTs as GETs for certain statuses which is not want we want for an"},{"line_number":194,"context_line":"        # API. See: https://en.wikipedia.org/wiki/Post/Redirect/Get"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        kwargs[\u0027allow_redirects\u0027] \u003d False"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        try:"},{"line_number":199,"context_line":"            resp \u003d self.session.request(method, url, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BYs%3D","line":196,"in_reply_to":"AAAATn%2F8vqY%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            self.user_agent \u003d user_agent"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def request(self, url, method, json\u003dNone, original_ip\u003dNone,"},{"line_number":91,"context_line":"                user_agent\u003dNone, **kwargs):"},{"line_number":92,"context_line":"        \"\"\"Send an HTTP request with the specified characteristics."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        Wrapper around `requests.Session.request` to handle tasks such as"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7RM%3D","line":91,"updated":"2014-01-06 17:46:50.000000000","message":"should have redirect\u003dNone as an argument, and documented below?","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                   (optional)"},{"line_number":104,"context_line":"        :param dict headers: Headers to be included in the request. (optional)"},{"line_number":105,"context_line":"        :param kwargs: any other parameter that can be passed to"},{"line_number":106,"context_line":"             requests.Session.request (such as `headers`) or `json`"},{"line_number":107,"context_line":"             that will be encoded as JSON and used as `data` argument"},{"line_number":108,"context_line":"        :param json: Some data to be represented as JSON. (optional)"},{"line_number":109,"context_line":"        :param string user_agent: A user_agent to use for the request. If"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7RU%3D","line":106,"updated":"2014-01-06 17:46:50.000000000","message":"should add a comment here that allow_redirects will be ignored... and maybe have some code that logs a warning if they do it.","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        if data:"},{"line_number":159,"context_line":"            _logger.debug(\u0027REQ BODY: %s\u0027, data)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        kwargs[\u0027allow_redirects\u0027] \u003d False"},{"line_number":162,"context_line":"        redirect \u003d kwargs.get(\u0027redirect\u0027, self.redirect)"},{"line_number":163,"context_line":"        resp \u003d self._send_request(url, method, redirect, **kwargs)"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7Vw%3D","line":161,"updated":"2014-01-06 17:46:50.000000000","message":"add a comment before this line like\n\n # Force requests.Session.request to not handle redirects automatically\n # since requests.Session.request does a GET for POST redirect.","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        kwargs[\u0027allow_redirects\u0027] \u003d False"},{"line_number":162,"context_line":"        redirect \u003d kwargs.get(\u0027redirect\u0027, self.redirect)"},{"line_number":163,"context_line":"        resp \u003d self._send_request(url, method, redirect, **kwargs)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # NOTE(jamielennox): we create a tuple here to be the same as what is"},{"line_number":166,"context_line":"        # returned by the requests library."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7UA%3D","line":163,"updated":"2014-01-06 17:46:50.000000000","message":"if kwargs has \u0027redirect\u0027 in it (see previous line) then this is going to raise \"got multiple values for keyword argument \u0027redirect\u0027\". So 162 should be pop instead of get ?","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                redirect -\u003d 1"},{"line_number":203,"context_line":"                redirect_allowed \u003d redirect \u003e\u003d 0"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            if redirect_allowed:"},{"line_number":206,"context_line":"                try:"},{"line_number":207,"context_line":"                    location \u003d resp.headers[\u0027location\u0027]"},{"line_number":208,"context_line":"                except KeyError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7VI%3D","line":205,"updated":"2014-01-06 17:46:50.000000000","message":"suggest do \n \n if not redirect_allowed:\n     # Not redirecting, so response is current.\n     return resp\n\nthen can unindent 13 lines.","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                                 \"location was not provided.\", resp.url)"},{"line_number":211,"context_line":"                else:"},{"line_number":212,"context_line":"                    new_resp \u003d self._send_request(location, method,"},{"line_number":213,"context_line":"                                                  redirect\u003dredirect,"},{"line_number":214,"context_line":"                                                  **kwargs)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"                    if not isinstance(new_resp.history, list):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7Wo%3D","line":213,"updated":"2014-01-06 17:46:50.000000000","message":"suggest change \"redirect\u003dredirect\" here to \"redirect\" since it\u0027s a required parameter.","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4ac8dbcbf60561e89abf503ef97d80dc8c44e87b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    user_agent \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    REDIRECT_STATUSES \u003d (301, 302, 303, 305, 307)"},{"line_number":37,"context_line":"    DEFAULT_REDIRECT_LIMIT \u003d 30"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"},{"line_number":40,"context_line":"                 timeout\u003dNone, user_agent\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FwB0%3D","line":37,"updated":"2014-01-08 22:08:15.000000000","message":"that seems really high lol","commit_id":"29e71d44e39eb5c14155f7128be3e377de865c57"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"cc972460f7a58be37591ee6a63809798aaa10aec","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    user_agent \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    REDIRECT_STATUSES \u003d (301, 302, 303, 305, 307)"},{"line_number":37,"context_line":"    DEFAULT_REDIRECT_LIMIT \u003d 30"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, session\u003dNone, original_ip\u003dNone, verify\u003dTrue, cert\u003dNone,"},{"line_number":40,"context_line":"                 timeout\u003dNone, user_agent\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Fvhs%3D","line":37,"in_reply_to":"AAAAUH%2F%2FwB0%3D","updated":"2014-01-09 00:21:39.000000000","message":"I agree, but the spec technically says forever. 30 is what is used by the requests library","commit_id":"29e71d44e39eb5c14155f7128be3e377de865c57"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4ac8dbcbf60561e89abf503ef97d80dc8c44e87b","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                redirect_allowed \u003d redirect"},{"line_number":211,"context_line":"            else:"},{"line_number":212,"context_line":"                redirect -\u003d 1"},{"line_number":213,"context_line":"                redirect_allowed \u003d redirect \u003e\u003d 0"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            if not redirect_allowed:"},{"line_number":216,"context_line":"                return resp"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FwAU%3D","line":213,"updated":"2014-01-08 22:08:15.000000000","message":"interesting way to implement the redirect forever vs redirect limit","commit_id":"29e71d44e39eb5c14155f7128be3e377de865c57"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"cc972460f7a58be37591ee6a63809798aaa10aec","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                redirect_allowed \u003d redirect"},{"line_number":211,"context_line":"            else:"},{"line_number":212,"context_line":"                redirect -\u003d 1"},{"line_number":213,"context_line":"                redirect_allowed \u003d redirect \u003e\u003d 0"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            if not redirect_allowed:"},{"line_number":216,"context_line":"                return resp"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Fvgg%3D","line":213,"in_reply_to":"AAAAUH%2F%2FwAU%3D","updated":"2014-01-09 00:21:39.000000000","message":"good interesting?","commit_id":"29e71d44e39eb5c14155f7128be3e377de865c57"}],"keystoneclient/tests/test_session.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                httpretty.register_uri(method, s, status\u003dstatus, location\u003dd,"},{"line_number":162,"context_line":"                                       **redirect_kwargs)"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                httpretty.register_uri(method, s, **final_kwargs)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def assertResponse(self, resp):"},{"line_number":167,"context_line":"        self.assertEqual(resp.status_code, 200)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vng%3D","line":164,"updated":"2013-12-20 19:10:16.000000000","message":"seems excessive when could just do this after the loop.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                httpretty.register_uri(method, s, status\u003dstatus, location\u003dd,"},{"line_number":162,"context_line":"                                       **redirect_kwargs)"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                httpretty.register_uri(method, s, **final_kwargs)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def assertResponse(self, resp):"},{"line_number":167,"context_line":"        self.assertEqual(resp.status_code, 200)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BV4%3D","line":164,"in_reply_to":"AAAATn%2F8vng%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def assertResponse(self, resp):"},{"line_number":167,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":168,"context_line":"        self.assertEqual(resp.text, \u0027Found\u0027)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @httpretty.activate"},{"line_number":171,"context_line":"    def test_basic_get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vnU%3D","line":168,"updated":"2013-12-20 19:10:16.000000000","message":"suggest use a constant for this string so that it\u0027s obvious it\u0027s the same as line 157.","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def assertResponse(self, resp):"},{"line_number":167,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":168,"context_line":"        self.assertEqual(resp.text, \u0027Found\u0027)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @httpretty.activate"},{"line_number":171,"context_line":"    def test_basic_get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BV0%3D","line":168,"in_reply_to":"AAAATn%2F8vnU%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fbef35fa12ee9a2823817b36f3abc82ba009df54","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            session \u003d client_session.Session(redirect\u003di)"},{"line_number":205,"context_line":"            resp \u003d session.get(self.REDIRECT_CHAIN[0])"},{"line_number":206,"context_line":"            self.assertEqual(resp.status_code, 305)"},{"line_number":207,"context_line":"            self.assertEqual(resp.url, self.REDIRECT_CHAIN[i])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @httpretty.activate"},{"line_number":210,"context_line":"    def test_history_matches_requests(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8vnM%3D","line":207,"updated":"2013-12-20 19:10:16.000000000","message":"do you get the body back too?","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"38c63933310fc232ec39f1136ff55d449a8395b9","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            session \u003d client_session.Session(redirect\u003di)"},{"line_number":205,"context_line":"            resp \u003d session.get(self.REDIRECT_CHAIN[0])"},{"line_number":206,"context_line":"            self.assertEqual(resp.status_code, 305)"},{"line_number":207,"context_line":"            self.assertEqual(resp.url, self.REDIRECT_CHAIN[i])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @httpretty.activate"},{"line_number":210,"context_line":"    def test_history_matches_requests(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BV8%3D","line":207,"in_reply_to":"AAAATn%2F8vnM%3D","updated":"2014-01-06 00:19:05.000000000","message":"Done","commit_id":"8f35113b7aaca86981bd7ffb65b5108633a59adf"}],"keystoneclient/tests/test_shell.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad9e60a9f78cd84566bbecf29c8f26f8736944a","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                   \u0027 --os-auth-url\u003dblah.com endpoint-list\u0027))"},{"line_number":446,"context_line":"            request_mock.assert_called_with(mock.ANY, mock.ANY,"},{"line_number":447,"context_line":"                                            timeout\u003d2,"},{"line_number":448,"context_line":"                                            allow_redirects\u003dmock.ANY,"},{"line_number":449,"context_line":"                                            headers\u003dmock.ANY,"},{"line_number":450,"context_line":"                                            verify\u003dmock.ANY)"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F7SI%3D","line":448,"updated":"2014-01-06 17:46:50.000000000","message":"should mock.ANY be False, since we always expect allow_redirects to be False?","commit_id":"0f4f70d2d98fb531b20dc90784fdf5848e021f1a"}]}
