)]}'
{"keystoneclient/discover.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a400b63363f389f2fd2dfc2d48b4d38f5dbc6446","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def __eq__(self, other):"},{"line_number":80,"context_line":"        return self.version \u003d\u003d other.version and self.status \u003d\u003d other.status"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def create_client(self, **kwargs):"},{"line_number":83,"context_line":"        if kwargs:"},{"line_number":84,"context_line":"            client_kwargs \u003d self.kwargs.copy()"},{"line_number":85,"context_line":"            client_kwargs.update(kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F%2BSg%3D","line":82,"updated":"2014-01-06 00:42:18.000000000","message":"isn\u0027t removing __call__ a change that not backwards-compatible?","commit_id":"5abeefa1eb836dc1414e91908502d9f6b4d72650"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"298fe4c738346eee3cd4ccb0521abb636e8bf181","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def __eq__(self, other):"},{"line_number":80,"context_line":"        return self.version \u003d\u003d other.version and self.status \u003d\u003d other.status"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def create_client(self, **kwargs):"},{"line_number":83,"context_line":"        if kwargs:"},{"line_number":84,"context_line":"            client_kwargs \u003d self.kwargs.copy()"},{"line_number":85,"context_line":"            client_kwargs.update(kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F%2BRQ%3D","line":82,"in_reply_to":"AAAAUH%2F%2F%2BSg%3D","updated":"2014-01-06 00:49:30.000000000","message":"Absolutely, but discovery has never been released in a published version.","commit_id":"5abeefa1eb836dc1414e91908502d9f6b4d72650"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a400b63363f389f2fd2dfc2d48b4d38f5dbc6446","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    operates upon the data that was retrieved."},{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def __init__(self, session, **kwargs):"},{"line_number":172,"context_line":"        \"\"\"Construct a new discovery object."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        The connection parameters associated with this method are the same"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F%2BSM%3D","line":171,"updated":"2014-01-06 00:42:18.000000000","message":"is adding a required argument backwards-compatible?","commit_id":"5abeefa1eb836dc1414e91908502d9f6b4d72650"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a400b63363f389f2fd2dfc2d48b4d38f5dbc6446","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        :param string endpoint: A user-supplied endpoint URL for the identity"},{"line_number":191,"context_line":"                                service. (optional)"},{"line_number":192,"context_line":"        \"\"\""},{"line_number":193,"context_line":"        url \u003d kwargs.get(\u0027endpoint\u0027) or kwargs.get(\u0027auth_url\u0027)"},{"line_number":194,"context_line":"        if not url:"},{"line_number":195,"context_line":"            raise exceptions.DiscoveryFailure(\u0027Not enough information to \u0027"},{"line_number":196,"context_line":"                                              \u0027determine URL. Provide either \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F%2BSI%3D","line":193,"updated":"2014-01-06 00:42:18.000000000","message":"revert whitespace change on previous line.","commit_id":"5abeefa1eb836dc1414e91908502d9f6b4d72650"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5797b1566896020fa76b304942e61b6e96982c34","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"            raise exceptions.VersionNotAvailable(msg)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        return chosen.create_client()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2FrWc%3D","line":409,"updated":"2014-01-03 17:03:42.000000000","message":"Ok, it makes sens to have a _KeystoneVersion.create_client() instead of _KestoneVersion() returning the client.","commit_id":"5abeefa1eb836dc1414e91908502d9f6b4d72650"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"863ff4c6308ed1b95b8feb1145d5d106a6dd11be","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    raise TypeError(\"Invalid version specified: %s\" % version)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def available_versions(url, session\u003dNone):"},{"line_number":134,"context_line":"    if not session:"},{"line_number":135,"context_line":"        session \u003d client_session.Session()"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Fwn8%3D","line":133,"updated":"2014-01-08 20:29:11.000000000","message":"this method is way cleaner than before - nice work","commit_id":"9d0539c5bad82a9d7d44c764bba1c11c0262da64"}],"keystoneclient/session.py":[{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"9a2a6192e8b84047aa1c5b6de79b6b574f6ea846","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        return self.request(url, \u0027PATCH\u0027, **kwargs)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @classmethod"},{"line_number":253,"context_line":"    def construct(cls, kwargs):"},{"line_number":254,"context_line":"        \"\"\"Handles constructing a session from the older HTTPClient args as"},{"line_number":255,"context_line":"        well as the new request style arguments."},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2BxT4%3D","line":253,"updated":"2014-01-22 10:10:25.000000000","message":"Good to have moved this function as a Session static method rather than in the utils module. This is somehow a constructor of Session objects.","commit_id":"dfa8a68fb66f4945e58ff7cdffc9bc40b4ff0531"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"adb9d5ed1d87cbc8b7a3ea83654fe41eed818bcc","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        This function purposefully modifies the input kwargs dictionary so that"},{"line_number":263,"context_line":"        the remaining kwargs dict can be reused and passed on to other"},{"line_number":264,"context_line":"        functionswithout session arguments."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        \"\"\""},{"line_number":267,"context_line":"        verify \u003d kwargs.pop(\u0027verify\u0027, None)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F9aqU%3D","line":264,"updated":"2014-02-07 02:23:58.000000000","message":"(nit) add space \"functionswithout\" -\u003e \"functions without\"","commit_id":"1263bd7c3a8ccded3cef7c799a2f8c744fb79aa2"}],"keystoneclient/utils.py":[{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5797b1566896020fa76b304942e61b6e96982c34","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            verify \u003d cacert or True"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    if cert and key:"},{"line_number":196,"context_line":"        # this is the old style, if cert is on its own it\u0027s requests style"},{"line_number":197,"context_line":"        cert \u003d (cert, key)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    return session.Session(verify\u003dverify, cert\u003dcert, debug\u003ddebug,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2FrZ8%3D","line":196,"updated":"2014-01-03 17:03:42.000000000","message":"I don\u0027t understand the comment. Is there a typo ?","commit_id":"5abeefa1eb836dc1414e91908502d9f6b4d72650"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"88b109662ae1769b8abc36f55ce4e0fe7e0c65ab","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def construct_session_from_kwargs(kwargs_in_out):"},{"line_number":173,"context_line":"    \"\"\"Handles constructing a session from the older HTTPClient args as well"},{"line_number":174,"context_line":"    as the new request style arguments."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F7OQ%3D","line":172,"updated":"2014-01-06 18:00:36.000000000","message":"there should be unit tests for this new function.\n\n 1) verify that all the pop\u0027ed arguments are gone\n 2) verify that non-popped arguments are there\n 3) verify the \"verify\" handling\n 4) verify the cert and key if check and code","commit_id":"9d0539c5bad82a9d7d44c764bba1c11c0262da64"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"863ff4c6308ed1b95b8feb1145d5d106a6dd11be","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def construct_session_from_kwargs(kwargs_in_out):"},{"line_number":173,"context_line":"    \"\"\"Handles constructing a session from the older HTTPClient args as well"},{"line_number":174,"context_line":"    as the new request style arguments."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FwYg%3D","line":172,"in_reply_to":"AAAAUH%2F%2F7OQ%3D","updated":"2014-01-08 20:29:11.000000000","message":"i really hate the \"_in_out\" naming... what is that supposed to convey?!\n\nand the \"_from_kwargs\" is completely redundant with the rest of the signature. this conveys the same thing to me without being so verbose:\n\n  def construct_session(kwargs):\n    pass","commit_id":"9d0539c5bad82a9d7d44c764bba1c11c0262da64"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"f34aafdba9420a3fb84d3e5255a7c2ea9701a9ab","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def construct_session_from_client_args(kwargs):"},{"line_number":173,"context_line":"    \"\"\"Handles constructing a session from the older HTTPClient args as well"},{"line_number":174,"context_line":"    as the new request style arguments."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Fsfc%3D","line":172,"updated":"2014-01-09 14:38:14.000000000","message":"HAve to agree with Dolph here:  why is it important where the args come from?  construct_session is a factory method, no need to add client_args to the name","commit_id":"df9789c3a9cbf9c32a2a0bde16f4a44ffdb2a613"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8d1db7d772b9bdbf693ac4d486e213c6cee01c63","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def construct_session_from_client_args(kwargs):"},{"line_number":173,"context_line":"    \"\"\"Handles constructing a session from the older HTTPClient args as well"},{"line_number":174,"context_line":"    as the new request style arguments."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FqUI%3D","line":172,"in_reply_to":"AAAAUH%2F%2Fsfc%3D","updated":"2014-01-09 23:38:21.000000000","message":"... yes and no - this is not supposed to be a generic session constructor. It is supposed to be a bridge between the old parameters that were given to a client and the new ones that are given to the session. I was trying to make it really obvious that this is an internal compatability function and not something people see as a cheap way to \u0027construct_session\u0027.\n\nI guess it doesn\u0027t matter because it\u0027s a util anyway, it handles being given session arguments, and it may be used in the transition of other clients.","commit_id":"df9789c3a9cbf9c32a2a0bde16f4a44ffdb2a613"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6269575d1b8339efa50f4e740022a50609a6aa59","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def construct_session(kwargs):"},{"line_number":173,"context_line":"    \"\"\"Handles constructing a session from the older HTTPClient args as well"},{"line_number":174,"context_line":"    as the new request style arguments."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FlGY%3D","line":172,"updated":"2014-01-10 20:09:27.000000000","message":"suggest return a tuple with new kwargs rather than having 2 ways to return something.","commit_id":"c0cf6613308b1a596e4a99fbe9e375d4d64881d2"}]}
