)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f57b0f1190883c1031a48a36294dd95577f007","unresolved":false,"context_lines":[{"line_number":11,"context_line":"only for discovering keystone versions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Now that session and auth plugins are getting more intelligence we need"},{"line_number":14,"context_line":"to start looking at a more global OpenStack discovery mechanism and the"},{"line_number":15,"context_line":"existing one makes some bad assumptions. For example that you should"},{"line_number":16,"context_line":"ever have the discovery object launch the client for you."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAW3%2F%2FkIc%3D","line":14,"updated":"2014-04-12 15:26:45.000000000","message":"there should be a blueprint for this.","commit_id":"5b93c6f21255d642d6e62e82e3185b0e8e1a86ed"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Now that session and auth plugins are getting more intelligence we need"},{"line_number":14,"context_line":"to start looking at a more global OpenStack discovery mechanism and the"},{"line_number":15,"context_line":"existing one makes some bad assumptions. For example that you should"},{"line_number":16,"context_line":"ever have the discovery object launch the client for you."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This splits what I\u0027ve been thinking of the active and passive parts of"},{"line_number":19,"context_line":"discovery. The active parts do things like launch a client for you and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAXX%2F%2F9Qo%3D","line":16,"updated":"2014-04-25 03:10:57.000000000","message":"Suggest rephrasing this to a simple example: e.g. using the discovery object to launch the client","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":15,"context_line":"existing one makes some bad assumptions. For example that you should"},{"line_number":16,"context_line":"ever have the discovery object launch the client for you."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This splits what I\u0027ve been thinking of the active and passive parts of"},{"line_number":19,"context_line":"discovery. The active parts do things like launch a client for you and"},{"line_number":20,"context_line":"the passive allows you to query discovery information. It is split into"},{"line_number":21,"context_line":"a new file so that the passive section can be used elsewhere in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAXX%2F%2F9Qk%3D","line":18,"updated":"2014-04-25 03:10:57.000000000","message":"remove \"what i\u0027ve been thinking of\"","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":16,"context_line":"ever have the discovery object launch the client for you."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This splits what I\u0027ve been thinking of the active and passive parts of"},{"line_number":19,"context_line":"discovery. The active parts do things like launch a client for you and"},{"line_number":20,"context_line":"the passive allows you to query discovery information. It is split into"},{"line_number":21,"context_line":"a new file so that the passive section can be used elsewhere in"},{"line_number":22,"context_line":"keystoneclient without the dependencies imposed by the active component."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAXX%2F%2F9Qg%3D","line":19,"updated":"2014-04-25 03:10:57.000000000","message":"suggest rephrase to be more specific \"do things like\" is not very specific. Not sure if there is a good list of things the active parts do (or if that should be left to the documentation)","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"I\u0027m happy for now to leave the passive _discover.py file private as all"},{"line_number":25,"context_line":"the mechanisms that would be needed by a user can be accessed from the"},{"line_number":26,"context_line":"discover.py file as well."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In light of this I removed a lot of the private components to the"},{"line_number":29,"context_line":"original discover as it should instead make as much use of the querying"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAXX%2F%2F9QU%3D","line":26,"updated":"2014-04-25 03:10:57.000000000","message":"Suggest: The passive _discover.py file has been left private as all the mechanisms that are needed by a user can be accessed from the discover.py file.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In light of this I removed a lot of the private components to the"},{"line_number":29,"context_line":"original discover as it should instead make as much use of the querying"},{"line_number":30,"context_line":"functions as possible."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Blueprint: endpoint-version-query"},{"line_number":33,"context_line":"Change-Id: I7e1891536289c57ad3fbe8ef1c6e50b7344d83d5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAXX%2F%2F9Pk%3D","line":30,"updated":"2014-04-25 03:10:57.000000000","message":"I am not sure how to reword this sentence. It feels like a couple sentences were smashed together? You might be ok removing this sentence.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"}],"keystoneclient/_discover.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"55b8046c6d9e9fba3bebeae0738e6d753eb1ca5d","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Version discovery was written in a way that it would do things like create a"},{"line_number":16,"context_line":"session object and a client object for a user. This is useful for a user of the"},{"line_number":17,"context_line":"keystoneclient library but it is not what we want when using a discovery object"},{"line_number":18,"context_line":"internally. It also has dependencies that will not resolve cleanly if used"},{"line_number":19,"context_line":"internally."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2FhZg%3D","line":17,"updated":"2014-04-14 00:57:05.000000000","message":"Suggest not using \"we\" (royal we? the keystone team? who is we?) in docstrings (I know I\u0027m guilty of it). Perhaps: but is not desirable when using a discovery object internally ...","commit_id":"5b93c6f21255d642d6e62e82e3185b0e8e1a86ed"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"55b8046c6d9e9fba3bebeae0738e6d753eb1ca5d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"internally. It also has dependencies that will not resolve cleanly if used"},{"line_number":19,"context_line":"internally."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The functions in this file should be the passive components of discovery. By"},{"line_number":22,"context_line":"that I mean functions that let you query the data from a discovery request."},{"line_number":23,"context_line":"They are accessible from the active components as discover.Discover inherits"},{"line_number":24,"context_line":"from this."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2FhZY%3D","line":21,"updated":"2014-04-14 00:57:05.000000000","message":"suggest \"should be\" to \"are\"","commit_id":"5b93c6f21255d642d6e62e82e3185b0e8e1a86ed"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"55b8046c6d9e9fba3bebeae0738e6d753eb1ca5d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"internally."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The functions in this file should be the passive components of discovery. By"},{"line_number":22,"context_line":"that I mean functions that let you query the data from a discovery request."},{"line_number":23,"context_line":"They are accessible from the active components as discover.Discover inherits"},{"line_number":24,"context_line":"from this."},{"line_number":25,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2FhZU%3D","line":22,"updated":"2014-04-14 00:57:05.000000000","message":"Suggest remove this whole sentence.","commit_id":"5b93c6f21255d642d6e62e82e3185b0e8e1a86ed"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"55b8046c6d9e9fba3bebeae0738e6d753eb1ca5d","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from keystoneclient import exceptions"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_version_data(session, url):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2FhZM%3D","line":31,"updated":"2014-04-14 00:57:05.000000000","message":"Shouldn\u0027t there be an extra line between import and the variable? Since this is a module level variable should it be capitalized?","commit_id":"5b93c6f21255d642d6e62e82e3185b0e8e1a86ed"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"55b8046c6d9e9fba3bebeae0738e6d753eb1ca5d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    else:"},{"line_number":85,"context_line":"        version \u003d str(num)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    # if it\u0027s a string (or an integer) from above break it on ."},{"line_number":88,"context_line":"    try:"},{"line_number":89,"context_line":"        return tuple(map(int, version.split(\u0027.\u0027)))"},{"line_number":90,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2FhXY%3D","line":87,"updated":"2014-04-14 00:57:05.000000000","message":"not sure if we could collapse these try/except blocks down, but it looks as if this one will always fail if the previous one fails? I think this could be made a bit more succinct","commit_id":"5b93c6f21255d642d6e62e82e3185b0e8e1a86ed"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"\"\"\"The passive components to version discovery."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Version discovery was written in a way that it would do things like create a"},{"line_number":16,"context_line":"session object and a client object for a user. This is useful for a user of the"},{"line_number":17,"context_line":"keystoneclient library but it is not what we want when using a discovery object"},{"line_number":18,"context_line":"internally. It also has dependencies that will not resolve cleanly if used"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9RY%3D","line":15,"updated":"2014-04-25 03:10:57.000000000","message":"Suggest avoiding documenting things in a past tense (we\u0027re documenting the previous behavior that isn\u0027t clear without seeing a diff?). \n\nSuggest also avoiding using the phrase \"would do things like ...\" it is unclear if there are other things it did/does/doing.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":16,"context_line":"session object and a client object for a user. This is useful for a user of the"},{"line_number":17,"context_line":"keystoneclient library but it is not what we want when using a discovery object"},{"line_number":18,"context_line":"internally. It also has dependencies that will not resolve cleanly if used"},{"line_number":19,"context_line":"internally."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The functions in this file should be the passive components of discovery. By"},{"line_number":22,"context_line":"that I mean functions that let you query the data from a discovery request."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9RM%3D","line":19,"updated":"2014-04-25 03:10:57.000000000","message":"This whole paragraph can probably be removed.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":19,"context_line":"internally."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The functions in this file should be the passive components of discovery. By"},{"line_number":22,"context_line":"that I mean functions that let you query the data from a discovery request."},{"line_number":23,"context_line":"They are accessible from the active components as discover.Discover inherits"},{"line_number":24,"context_line":"from this."},{"line_number":25,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9RE%3D","line":22,"updated":"2014-04-25 03:10:57.000000000","message":"Suggest rewording: These are the function that provide an interface to query the data from a discovery request.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":21,"context_line":"The functions in this file should be the passive components of discovery. By"},{"line_number":22,"context_line":"that I mean functions that let you query the data from a discovery request."},{"line_number":23,"context_line":"They are accessible from the active components as discover.Discover inherits"},{"line_number":24,"context_line":"from this."},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9RA%3D","line":24,"updated":"2014-04-25 03:10:57.000000000","message":"If it is important to cover the \"dependencies that don\u0027t cleanly resolve\" add that information after this paragraph. I don\u0027t think it is super important to have that in the docstring.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from keystoneclient import exceptions"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_version_data(session, url):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9Q8%3D","line":31,"updated":"2014-04-25 03:10:57.000000000","message":"Suggest extra space above this line.\nSuggest capitalization of module-level variable","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e8fa192d59a477fafa8e541746f055e22206b640","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from keystoneclient import exceptions"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_version_data(session, url):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F804%3D","line":31,"in_reply_to":"AAAAXX%2F%2F9Q8%3D","updated":"2014-04-25 06:28:41.000000000","message":"Done","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":31,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_version_data(session, url):"},{"line_number":35,"context_line":"    headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    resp \u003d session.get(url, headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9Pg%3D","line":34,"updated":"2014-04-25 03:10:57.000000000","message":"Docstring would be good here.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e8fa192d59a477fafa8e541746f055e22206b640","unresolved":false,"context_lines":[{"line_number":31,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_version_data(session, url):"},{"line_number":35,"context_line":"    headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    resp \u003d session.get(url, headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F808%3D","line":34,"in_reply_to":"AAAAXX%2F%2F9Pg%3D","updated":"2014-04-25 06:28:41.000000000","message":"Done","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    CURRENT_STATUSES \u003d [\u0027stable\u0027, \u0027current\u0027, \u0027supported\u0027]"},{"line_number":131,"context_line":"    DEPRECATED_STATUSES \u003d [\u0027deprecated\u0027]"},{"line_number":132,"context_line":"    EXPERIMENTAL_STATUSES \u003d [\u0027experimental\u0027]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def __init__(self, session, url):"},{"line_number":135,"context_line":"        self._data \u003d get_version_data(session, url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9KQ%3D","line":132,"updated":"2014-04-25 03:10:57.000000000","message":"You might want to make these a frozenset to ensure nothing accidently changes them. unless it\u0027s expected these will change. This suggestion is just a thought and can be ignored if it\u0027s the wrong approach.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e8fa192d59a477fafa8e541746f055e22206b640","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    CURRENT_STATUSES \u003d [\u0027stable\u0027, \u0027current\u0027, \u0027supported\u0027]"},{"line_number":131,"context_line":"    DEPRECATED_STATUSES \u003d [\u0027deprecated\u0027]"},{"line_number":132,"context_line":"    EXPERIMENTAL_STATUSES \u003d [\u0027experimental\u0027]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def __init__(self, session, url):"},{"line_number":135,"context_line":"        self._data \u003d get_version_data(session, url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F82M%3D","line":132,"in_reply_to":"AAAAXX%2F%2F9KQ%3D","updated":"2014-04-25 06:28:41.000000000","message":"I expect them to be mostly unchanged - but it is on purpose that this is not frozen as i can imagine people might wish to add things later.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            if status in self.CURRENT_STATUSES:"},{"line_number":165,"context_line":"                versions.append(v)"},{"line_number":166,"context_line":"            elif status in self.DEPRECATED_STATUSES and allow_deprecated:"},{"line_number":167,"context_line":"                versions.append(v)"},{"line_number":168,"context_line":"            elif status in self.EXPERIMENTAL_STATUSES and allow_experimental:"},{"line_number":169,"context_line":"                versions.append(v)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9Ik%3D","line":166,"updated":"2014-04-25 03:10:57.000000000","message":"you could invert the order here... it might be a super nit-picky optimisation that doesn\u0027t really matter.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e8fa192d59a477fafa8e541746f055e22206b640","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            if status in self.CURRENT_STATUSES:"},{"line_number":165,"context_line":"                versions.append(v)"},{"line_number":166,"context_line":"            elif status in self.DEPRECATED_STATUSES and allow_deprecated:"},{"line_number":167,"context_line":"                versions.append(v)"},{"line_number":168,"context_line":"            elif status in self.EXPERIMENTAL_STATUSES and allow_experimental:"},{"line_number":169,"context_line":"                versions.append(v)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F82I%3D","line":166,"in_reply_to":"AAAAXX%2F%2F9CY%3D","updated":"2014-04-25 06:28:41.000000000","message":"Done","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"355b2d2d637cf51e4c0fc9c11385902360b6bc70","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            if status in self.CURRENT_STATUSES:"},{"line_number":165,"context_line":"                versions.append(v)"},{"line_number":166,"context_line":"            elif status in self.DEPRECATED_STATUSES and allow_deprecated:"},{"line_number":167,"context_line":"                versions.append(v)"},{"line_number":168,"context_line":"            elif status in self.EXPERIMENTAL_STATUSES and allow_experimental:"},{"line_number":169,"context_line":"                versions.append(v)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9CY%3D","line":166,"in_reply_to":"AAAAXX%2F%2F9Ik%3D","updated":"2014-04-25 03:21:24.000000000","message":"This also applies to line 168","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        - version tuple: The normalized version of the endpoint."},{"line_number":182,"context_line":"        - url str: The url for the endpoint."},{"line_number":183,"context_line":"        - raw_status str: The status as provided by the server"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        :returns list(dict): A list of version data dictionaries sorted by"},{"line_number":186,"context_line":"                             version number."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9IQ%3D","line":183,"updated":"2014-04-25 03:10:57.000000000","message":"Is this correct RST format? (docstrings are supposed to be RST, right?) In the docs generated i don\u0027t see any docs for this method, might be RST issues","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e8fa192d59a477fafa8e541746f055e22206b640","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        - version tuple: The normalized version of the endpoint."},{"line_number":182,"context_line":"        - url str: The url for the endpoint."},{"line_number":183,"context_line":"        - raw_status str: The status as provided by the server"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        :returns list(dict): A list of version data dictionaries sorted by"},{"line_number":186,"context_line":"                             version number."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F8vE%3D","line":183,"in_reply_to":"AAAAXX%2F%2F9IQ%3D","updated":"2014-04-25 06:28:41.000000000","message":"Done","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"92e75ee0462d403c613237b24824799f0e428d98","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"                if rel.lower() \u003d\u003d \u0027self\u0027:"},{"line_number":216,"context_line":"                    break"},{"line_number":217,"context_line":"            else:"},{"line_number":218,"context_line":"                _logger.info(\u0027Skipping invalid version data. \u0027"},{"line_number":219,"context_line":"                             \u0027Missing link to endpoint.\u0027)"},{"line_number":220,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F9HE%3D","line":217,"updated":"2014-04-25 03:10:57.000000000","message":"I see the benefit of the for/else here, however, for/else is non-intuative for even seasoned python developers. Suggest restructuring to remove it if possible (for ease of maintenance and accessibility for developers). This may _not_ be easy to remove / make the code worse to read.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e8fa192d59a477fafa8e541746f055e22206b640","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"                if rel.lower() \u003d\u003d \u0027self\u0027:"},{"line_number":216,"context_line":"                    break"},{"line_number":217,"context_line":"            else:"},{"line_number":218,"context_line":"                _logger.info(\u0027Skipping invalid version data. \u0027"},{"line_number":219,"context_line":"                             \u0027Missing link to endpoint.\u0027)"},{"line_number":220,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F81s%3D","line":217,"in_reply_to":"AAAAXX%2F%2F9HE%3D","updated":"2014-04-25 06:28:41.000000000","message":"leaving it for now, if there is a better way to write it let me know but this looks clean to me.","commit_id":"f8e97fc6d07e6e23222d2329bb1f9a14ba371a9a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            pass"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    raise exceptions.DiscoveryFailure(\u0027Invalid Response - Bad version\u0027"},{"line_number":65,"context_line":"                                      \u0027 data returned: %s\u0027 % resp.text)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def normalize_version_number(version):"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_7620189c","line":65,"updated":"2014-04-28 23:09:04.000000000","message":"this could be a lot of data, so may want to truncate.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            pass"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    raise exceptions.DiscoveryFailure(\u0027Invalid Response - Bad version\u0027"},{"line_number":65,"context_line":"                                      \u0027 data returned: %s\u0027 % resp.text)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def normalize_version_number(version):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_c51ad36d","line":65,"in_reply_to":"facab960_7620189c","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            if status in self.CURRENT_STATUSES:"},{"line_number":164,"context_line":"                versions.append(v)"},{"line_number":165,"context_line":"            elif allow_deprecated and status in self.DEPRECATED_STATUSES:"},{"line_number":166,"context_line":"                versions.append(v)"},{"line_number":167,"context_line":"            elif allow_experimental and status in self.EXPERIMENTAL_STATUSES:"},{"line_number":168,"context_line":"                versions.append(v)"},{"line_number":169,"context_line":"            elif allow_unknown:"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_4b1d2d73","line":166,"updated":"2014-04-28 23:09:04.000000000","message":"This code isn\u0027t tested according to coverage report.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            if status in self.CURRENT_STATUSES:"},{"line_number":164,"context_line":"                versions.append(v)"},{"line_number":165,"context_line":"            elif allow_deprecated and status in self.DEPRECATED_STATUSES:"},{"line_number":166,"context_line":"                versions.append(v)"},{"line_number":167,"context_line":"            elif allow_experimental and status in self.EXPERIMENTAL_STATUSES:"},{"line_number":168,"context_line":"                versions.append(v)"},{"line_number":169,"context_line":"            elif allow_unknown:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_8a2298b7","line":166,"in_reply_to":"facab960_4b1d2d73","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            elif allow_deprecated and status in self.DEPRECATED_STATUSES:"},{"line_number":166,"context_line":"                versions.append(v)"},{"line_number":167,"context_line":"            elif allow_experimental and status in self.EXPERIMENTAL_STATUSES:"},{"line_number":168,"context_line":"                versions.append(v)"},{"line_number":169,"context_line":"            elif allow_unknown:"},{"line_number":170,"context_line":"                versions.append(v)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_6b12f163","line":168,"updated":"2014-04-28 23:09:04.000000000","message":"This code isn\u0027t tested according to coverage report.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            elif allow_deprecated and status in self.DEPRECATED_STATUSES:"},{"line_number":166,"context_line":"                versions.append(v)"},{"line_number":167,"context_line":"            elif allow_experimental and status in self.EXPERIMENTAL_STATUSES:"},{"line_number":168,"context_line":"                versions.append(v)"},{"line_number":169,"context_line":"            elif allow_unknown:"},{"line_number":170,"context_line":"                versions.append(v)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_aa2f5ca0","line":168,"in_reply_to":"facab960_6b12f163","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    def version_data(self, **kwargs):"},{"line_number":175,"context_line":"        \"\"\"Get normalized version data."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        Return version data in a structured way.  the server"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        :returns list(dict): A list of version data dictionaries sorted by"},{"line_number":180,"context_line":"                             version number. Each data element in the returned"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_b640e036","line":177,"updated":"2014-04-28 23:09:04.000000000","message":"remove \"the server\" (actually, could move it to line 185), seems it wandered here.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    def version_data(self, **kwargs):"},{"line_number":175,"context_line":"        \"\"\"Get normalized version data."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        Return version data in a structured way.  the server"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        :returns list(dict): A list of version data dictionaries sorted by"},{"line_number":180,"context_line":"                             version number. Each data element in the returned"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_0f693af9","line":177,"in_reply_to":"facab960_b640e036","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"          :version tuple: The normalized version of the endpoint."},{"line_number":184,"context_line":"          :url str: The url for the endpoint."},{"line_number":185,"context_line":"          :raw_status str: The status as provided by"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        data \u003d self.raw_version_data(**kwargs)"},{"line_number":188,"context_line":"        versions \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_364db073","line":185,"updated":"2014-04-28 23:09:04.000000000","message":"provided by what?? don\u0027t leave me hanging.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"          :version tuple: The normalized version of the endpoint."},{"line_number":184,"context_line":"          :url str: The url for the endpoint."},{"line_number":185,"context_line":"          :raw_status str: The status as provided by"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        data \u003d self.raw_version_data(**kwargs)"},{"line_number":188,"context_line":"        versions \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_2f6efe01","line":185,"in_reply_to":"facab960_364db073","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            try:"},{"line_number":192,"context_line":"                version_str \u003d v[\u0027id\u0027]"},{"line_number":193,"context_line":"            except KeyError:"},{"line_number":194,"context_line":"                _LOGGER.info(\u0027Skipping invalid version data. Missing ID.\u0027)"},{"line_number":195,"context_line":"                continue"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_8b173551","line":194,"updated":"2014-04-28 23:09:04.000000000","message":"this code isn\u0027t tested according to coverage report.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            try:"},{"line_number":192,"context_line":"                version_str \u003d v[\u0027id\u0027]"},{"line_number":193,"context_line":"            except KeyError:"},{"line_number":194,"context_line":"                _LOGGER.info(\u0027Skipping invalid version data. Missing ID.\u0027)"},{"line_number":195,"context_line":"                continue"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_ca2ca0ae","line":194,"in_reply_to":"facab960_8b173551","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            try:"},{"line_number":198,"context_line":"                links \u003d v[\u0027links\u0027]"},{"line_number":199,"context_line":"            except KeyError:"},{"line_number":200,"context_line":"                _LOGGER.info(\u0027Skipping invalid version data. Missing links\u0027)"},{"line_number":201,"context_line":"                continue"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            version_number \u003d normalize_version_number(version_str)"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_cb085d30","line":200,"updated":"2014-04-28 23:09:04.000000000","message":"this code isn\u0027t tested according to coverage report.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            try:"},{"line_number":198,"context_line":"                links \u003d v[\u0027links\u0027]"},{"line_number":199,"context_line":"            except KeyError:"},{"line_number":200,"context_line":"                _LOGGER.info(\u0027Skipping invalid version data. Missing links\u0027)"},{"line_number":201,"context_line":"                continue"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            version_number \u003d normalize_version_number(version_str)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_ea188486","line":200,"in_reply_to":"facab960_cb085d30","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        \"\"\"Return endpoint data for a specific version."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        :returns dict: the endpoint data for a URL that matches the required"},{"line_number":232,"context_line":"                       version (The format is descrbed in version_data)"},{"line_number":233,"context_line":"                       or None if no match."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        version \u003d normalize_version_number(version)"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_d66484e7","line":232,"updated":"2014-04-28 23:09:04.000000000","message":"change \"The format\" to \"the format\" (lowercase)\n\nchange \"descrbed\" to \"described\"","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        \"\"\"Return endpoint data for a specific version."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        :returns dict: the endpoint data for a URL that matches the required"},{"line_number":232,"context_line":"                       version (The format is descrbed in version_data)"},{"line_number":233,"context_line":"                       or None if no match."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        version \u003d normalize_version_number(version)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_8f746ad0","line":232,"in_reply_to":"facab960_d66484e7","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            if version_match(version, data[\u0027version\u0027]):"},{"line_number":240,"context_line":"                return data"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        return None"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def url_for(self, version, **kwargs):"},{"line_number":245,"context_line":"        \"\"\"Get the endpoint url for a required version."}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_165fcc0f","line":242,"updated":"2014-04-28 23:09:04.000000000","message":"could remove this line since that\u0027s the default.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            if version_match(version, data[\u0027version\u0027]):"},{"line_number":240,"context_line":"                return data"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        return None"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def url_for(self, version, **kwargs):"},{"line_number":245,"context_line":"        \"\"\"Get the endpoint url for a required version."}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_cf7e72ae","line":242,"in_reply_to":"facab960_165fcc0f","updated":"2014-05-02 00:43:14.000000000","message":"I\u0027m of the opinion that if you are expecting a return value you should be explicit about what you return.\n\nI don\u0027t mind though.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"}],"keystoneclient/discover.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":28,"context_line":"                    3: v3_client.Client}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def available_versions(url, session\u003dNone, **kwargs):"},{"line_number":32,"context_line":"    if not session:"},{"line_number":33,"context_line":"        session \u003d client_session.Session.construct(kwargs)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_36821053","line":31,"updated":"2014-04-28 23:09:04.000000000","message":"it\u0027s strange that the private function (get_version_data) has a docstring but the public one doesn\u0027t.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":28,"context_line":"                    3: v3_client.Client}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def available_versions(url, session\u003dNone, **kwargs):"},{"line_number":32,"context_line":"    if not session:"},{"line_number":33,"context_line":"        session \u003d client_session.Session.construct(kwargs)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_0c1ea870","line":31,"in_reply_to":"facab960_36821053","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not session:"},{"line_number":103,"context_line":"            session \u003d client_session.Session.construct(kwargs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        kwargs[\u0027session\u0027] \u003d session"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        url \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_56879461","line":104,"updated":"2014-04-28 23:09:04.000000000","message":"revert whitespace change","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not session:"},{"line_number":103,"context_line":"            session \u003d client_session.Session.construct(kwargs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        kwargs[\u0027session\u0027] \u003d session"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        url \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_2c136c67","line":104,"in_reply_to":"facab960_56879461","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                  \u0027status\u0027: \u0027stable\u0027,"},{"line_number":164,"context_line":"                  \u0027updated\u0027: \u00272013-03-06T00:00:00Z\u0027}]"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        return self.raw_version_data(unstable\u003dunstable)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def raw_version_data(self, unstable\u003dFalse, **kwargs):"},{"line_number":169,"context_line":"        if unstable:"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_96cf5cb0","line":166,"updated":"2014-04-28 23:09:04.000000000","message":"according to the coverage report this isn\u0027t tested.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                  \u0027status\u0027: \u0027stable\u0027,"},{"line_number":164,"context_line":"                  \u0027updated\u0027: \u00272013-03-06T00:00:00Z\u0027}]"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        return self.raw_version_data(unstable\u003dunstable)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def raw_version_data(self, unstable\u003dFalse, **kwargs):"},{"line_number":169,"context_line":"        if unstable:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_4a189081","line":166,"in_reply_to":"facab960_96cf5cb0","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        return self.raw_version_data(unstable\u003dunstable)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def raw_version_data(self, unstable\u003dFalse, **kwargs):"},{"line_number":169,"context_line":"        if unstable:"},{"line_number":170,"context_line":"            kwargs.setdefault(\u0027allow_experimental\u0027, True)"},{"line_number":171,"context_line":"            kwargs.setdefault(\u0027allow_unknown\u0027, True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_76b498f2","line":168,"updated":"2014-04-28 23:09:04.000000000","message":"should this have the same docstring as the _discover.Discover version?","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        return self.raw_version_data(unstable\u003dunstable)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def raw_version_data(self, unstable\u003dFalse, **kwargs):"},{"line_number":169,"context_line":"        if unstable:"},{"line_number":170,"context_line":"            kwargs.setdefault(\u0027allow_experimental\u0027, True)"},{"line_number":171,"context_line":"            kwargs.setdefault(\u0027allow_unknown\u0027, True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_8f654ae3","line":168,"in_reply_to":"facab960_76b498f2","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            if version:"},{"line_number":208,"context_line":"                msg \u003d \u0027%s for client version: %s\u0027 % (msg, version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            if all_versions:"},{"line_number":211,"context_line":"                available \u003d \u0027, \u0027.join([\u0027.\u0027.join([str(v) for v in d])"},{"line_number":212,"context_line":"                                       for d in six.iterkeys(all_versions)])"},{"line_number":213,"context_line":"                msg \u003d \u0027%s. Available_versions are: %s\u0027 % (msg, available)"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_965d9cec","line":210,"updated":"2014-04-28 23:09:04.000000000","message":"if the all_versions message is supposed to take precedence over the version message, use if-elseif\n\n if all_versions:\n   msg \u003d\n elif version:\n   msg \u003d\n else:\n   msg \u003d \u0027Could not find a suitable endpoint\u0027\n\nwhy set the value 3 times?","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            if version:"},{"line_number":208,"context_line":"                msg \u003d \u0027%s for client version: %s\u0027 % (msg, version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            if all_versions:"},{"line_number":211,"context_line":"                available \u003d \u0027, \u0027.join([\u0027.\u0027.join([str(v) for v in d])"},{"line_number":212,"context_line":"                                       for d in six.iterkeys(all_versions)])"},{"line_number":213,"context_line":"                msg \u003d \u0027%s. Available_versions are: %s\u0027 % (msg, available)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_8fac6aef","line":210,"in_reply_to":"facab960_965d9cec","updated":"2014-05-02 00:43:14.000000000","message":"these are accumulative, changed it to +\u003d to be more obvious.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                msg \u003d \u0027%s for client version: %s\u0027 % (msg, version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            if all_versions:"},{"line_number":211,"context_line":"                available \u003d \u0027, \u0027.join([\u0027.\u0027.join([str(v) for v in d])"},{"line_number":212,"context_line":"                                       for d in six.iterkeys(all_versions)])"},{"line_number":213,"context_line":"                msg \u003d \u0027%s. Available_versions are: %s\u0027 % (msg, available)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_b6c38089","line":211,"updated":"2014-04-28 23:09:04.000000000","message":"according to the coverage report this isn\u0027t tested.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                msg \u003d \u0027%s for client version: %s\u0027 % (msg, version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            if all_versions:"},{"line_number":211,"context_line":"                available \u003d \u0027, \u0027.join([\u0027.\u0027.join([str(v) for v in d])"},{"line_number":212,"context_line":"                                       for d in six.iterkeys(all_versions)])"},{"line_number":213,"context_line":"                msg \u003d \u0027%s. Available_versions are: %s\u0027 % (msg, available)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_4526c3b8","line":211,"in_reply_to":"facab960_b6c38089","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            raise exceptions.VersionNotAvailable(msg)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # Get the client for the version requested that was returned"},{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            client_class \u003d _CLIENT_VERSIONS[version_data[\u0027version\u0027][0]]"},{"line_number":220,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_d6e3a403","line":217,"updated":"2014-04-28 23:09:04.000000000","message":"seems like this method could be split into 2 parts --\n \n version_data \u003d self._calc_version(...)\n return self._create_client(version_data)","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            raise exceptions.VersionNotAvailable(msg)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # Get the client for the version requested that was returned"},{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            client_class \u003d _CLIENT_VERSIONS[version_data[\u0027version\u0027][0]]"},{"line_number":220,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_4fba62df","line":217,"in_reply_to":"facab960_d6e3a403","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            client_class \u003d _CLIENT_VERSIONS[version_data[\u0027version\u0027][0]]"},{"line_number":220,"context_line":"        except KeyError:"},{"line_number":221,"context_line":"            msg \u003d \u0027No client available for version: %s\u0027"},{"line_number":222,"context_line":"            raise exceptions.DiscoveryFailure(msg % version_data[\u0027version\u0027])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # reverse dict.update"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_16bb4c0f","line":221,"updated":"2014-04-28 23:09:04.000000000","message":"according to the coverage report this isn\u0027t tested.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            client_class \u003d _CLIENT_VERSIONS[version_data[\u0027version\u0027][0]]"},{"line_number":220,"context_line":"        except KeyError:"},{"line_number":221,"context_line":"            msg \u003d \u0027No client available for version: %s\u0027"},{"line_number":222,"context_line":"            raise exceptions.DiscoveryFailure(msg % version_data[\u0027version\u0027])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # reverse dict.update"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_8a09b833","line":221,"in_reply_to":"facab960_16bb4c0f","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            msg \u003d \u0027No client available for version: %s\u0027"},{"line_number":222,"context_line":"            raise exceptions.DiscoveryFailure(msg % version_data[\u0027version\u0027])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # reverse dict.update"},{"line_number":225,"context_line":"        for k, v in six.iteritems(self._client_kwargs):"},{"line_number":226,"context_line":"            kwargs.setdefault(k, v)"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_7641f80a","line":224,"updated":"2014-04-28 23:09:04.000000000","message":"what does this comment mean?","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            msg \u003d \u0027No client available for version: %s\u0027"},{"line_number":222,"context_line":"            raise exceptions.DiscoveryFailure(msg % version_data[\u0027version\u0027])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # reverse dict.update"},{"line_number":225,"context_line":"        for k, v in six.iteritems(self._client_kwargs):"},{"line_number":226,"context_line":"            kwargs.setdefault(k, v)"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_2ff43ef1","line":224,"in_reply_to":"facab960_7641f80a","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"}],"keystoneclient/tests/test_discovery.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        self.assertDiscoveryFailure(auth_url\u003dBASE_URL)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def test_discovery_ignore_invalid(self):"},{"line_number":468,"context_line":"        resp \u003d [{\u0027id\u0027: \u0027v3.0\u0027,"},{"line_number":469,"context_line":"                 \u0027links\u0027: [1, 2, 3, 4],  # invalid links"},{"line_number":470,"context_line":"                 \u0027media-types\u0027: V3_MEDIA_TYPES,"},{"line_number":471,"context_line":"                 \u0027status\u0027: \u0027stable\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_7682d801","line":468,"updated":"2014-04-28 23:09:04.000000000","message":"why did this test have to change?","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        self.assertDiscoveryFailure(auth_url\u003dBASE_URL)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def test_discovery_ignore_invalid(self):"},{"line_number":468,"context_line":"        resp \u003d [{\u0027id\u0027: \u0027v3.0\u0027,"},{"line_number":469,"context_line":"                 \u0027links\u0027: [1, 2, 3, 4],  # invalid links"},{"line_number":470,"context_line":"                 \u0027media-types\u0027: V3_MEDIA_TYPES,"},{"line_number":471,"context_line":"                 \u0027status\u0027: \u0027stable\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_afaa0e17","line":468,"in_reply_to":"facab960_7682d801","updated":"2014-05-02 00:43:14.000000000","message":"because in other services the not having a v in front of version is valid. So we relax that change for everyone.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        disc \u003d discover.Discover(auth_url\u003dBASE_URL)"},{"line_number":554,"context_line":"        versions \u003d disc.version_data()"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        self.assertEqual(versions[0][\u0027version\u0027], (2, 0))"},{"line_number":557,"context_line":"        self.assertEqual(versions[0][\u0027raw_status\u0027], \u0027stable\u0027)"},{"line_number":558,"context_line":"        self.assertEqual(versions[0][\u0027url\u0027], V2_URL)"},{"line_number":559,"context_line":"        self.assertEqual(versions[1][\u0027version\u0027], (3, 0))"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_f6750833","line":556,"updated":"2014-04-28 23:09:04.000000000","message":"(nit) the order of arguments to assertEqual is expected, observed -- https://github.com/testing-cabal/testtools/blob/master/testtools/testcase.py#L313","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        disc \u003d discover.Discover(auth_url\u003dBASE_URL)"},{"line_number":554,"context_line":"        versions \u003d disc.version_data()"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        self.assertEqual(versions[0][\u0027version\u0027], (2, 0))"},{"line_number":557,"context_line":"        self.assertEqual(versions[0][\u0027raw_status\u0027], \u0027stable\u0027)"},{"line_number":558,"context_line":"        self.assertEqual(versions[0][\u0027url\u0027], V2_URL)"},{"line_number":559,"context_line":"        self.assertEqual(versions[1][\u0027version\u0027], (3, 0))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_4f1262b2","line":556,"in_reply_to":"facab960_f6750833","updated":"2014-05-02 00:43:14.000000000","message":"Done","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        v1_url \u003d \"%sv1/\" % BASE_URL"},{"line_number":582,"context_line":"        v2_url \u003d \"%sv2/\" % BASE_URL"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        disc \u003d discover.Discover(auth_url\u003dBASE_URL)"},{"line_number":585,"context_line":"        versions \u003d disc.version_data()"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        self.assertEqual(versions[0][\u0027version\u0027], (1, 0))"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_96b59ccf","line":584,"updated":"2014-04-28 23:09:04.000000000","message":"I don\u0027t understand why we\u0027re testing glance endpoints with Discover -- If you do create_client you\u0027ll get an identity client?","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"413a8bfa10ec643cbec6a5666cd8f484e2024a24","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        v1_url \u003d \"%sv1/\" % BASE_URL"},{"line_number":582,"context_line":"        v2_url \u003d \"%sv2/\" % BASE_URL"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        disc \u003d discover.Discover(auth_url\u003dBASE_URL)"},{"line_number":585,"context_line":"        versions \u003d disc.version_data()"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        self.assertEqual(versions[0][\u0027version\u0027], (1, 0))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_2f5b5e88","line":584,"in_reply_to":"facab960_96b59ccf","updated":"2014-05-02 00:43:14.000000000","message":"we\u0027re not trying to create glance clients this way - but we do want to do discover on other services so that we can have the session object determine the available versions of all the different services.\n\nThat\u0027s kind of the point of this change, to remove versions from the service catalog we need to be able to query those services and see what versions they support.","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"99b8d7f100bb4d2c83661e6005dce30a46fe80ae","unresolved":false,"context_lines":[{"line_number":633,"context_line":""},{"line_number":634,"context_line":"        for ver in (2, 2.1, 2.2):"},{"line_number":635,"context_line":"            version \u003d disc.data_for(ver)"},{"line_number":636,"context_line":"            self.assertEqual(version[\u0027version\u0027], (2, 2))"},{"line_number":637,"context_line":"            self.assertEqual(version[\u0027raw_status\u0027], \u0027CURRENT\u0027)"},{"line_number":638,"context_line":"            self.assertEqual(version[\u0027url\u0027], v2_url)"},{"line_number":639,"context_line":"            self.assertEqual(disc.url_for(ver), v2_url)"}],"source_content_type":"text/x-python","patch_set":4,"id":"facab960_b6c9c05c","line":636,"updated":"2014-04-28 23:09:04.000000000","message":"this is going to be confusing if it fails, should print out the ver in the message for these asserts\n\n \u0027ver\u003d%s\u0027 % ver","commit_id":"3e8cb26162e0fd131e0ae930b8e5a31aa38266bf"}]}
