)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7789be0aace3089851f962b349b54d4b3a909ada","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"support micro version if sent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Don\u0027t hard coded to check for version 3.0, support micro version such"},{"line_number":10,"context_line":"as v3.1, v3.1.1, v3.2 etc..."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7b249fc71894caafaf847bcfbb0c02907a740e6e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_ecda8016","line":9,"updated":"2014-12-07 23:10:17.000000000","message":"change \"coded to\" to \"code the\"","commit_id":"0b987a756ea3f4db19210291aaea2605a84d18bc"}],"keystonemiddleware/auth_token.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7789be0aace3089851f962b349b54d4b3a909ada","unresolved":false,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"        headers \u003d {}"},{"line_number":1443,"context_line":""},{"line_number":1444,"context_line":"        if self._auth_version.startswith(\u0027v3\u0027):"},{"line_number":1445,"context_line":"            headers[\u0027X-Subject-Token\u0027] \u003d user_token"},{"line_number":1446,"context_line":"            version \u003d (3, 0)"},{"line_number":1447,"context_line":"            path \u003d \u0027/auth/tokens\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_acf7988b","line":1444,"updated":"2014-12-07 23:10:17.000000000","message":"This doesn\u0027 t match what was requested in the bug report so I don\u0027t think it fixes the problem.","commit_id":"0b987a756ea3f4db19210291aaea2605a84d18bc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e1eb1af5e4a3023f68c4691c78bd9df463f48d0c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"import stat"},{"line_number":179,"context_line":"import tempfile"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"from keystoneclient import _discover"},{"line_number":182,"context_line":"from keystoneclient import access"},{"line_number":183,"context_line":"from keystoneclient import adapter"},{"line_number":184,"context_line":"from keystoneclient import auth"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_4e5df3e8","line":181,"updated":"2014-12-10 06:13:20.000000000","message":"this is a private module and so shouldn\u0027t be imported. \n\nI made them public from client: https://review.openstack.org/#/c/129935/","commit_id":"871a215cfdb1942fe4a965a810aa2cfce799a2d9"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"2d49e57b052cc5deb1c507c4dde38f58282d9fb9","unresolved":false,"context_lines":[{"line_number":1368,"context_line":"        return self._identity_server_obj"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"    def _get_server_class(self, adap):"},{"line_number":1371,"context_line":"        auth_version \u003d self._conf_get(\u0027auth_version\u0027) or \u0027v2.0\u0027"},{"line_number":1372,"context_line":"        normalize_version \u003d _discover.normalize_version_number(auth_version)"},{"line_number":1373,"context_line":""},{"line_number":1374,"context_line":"        if _discover.version_match((3,), normalize_version):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_15211d4d","line":1371,"updated":"2014-12-10 18:38:36.000000000","message":"Please use some external constant instead of \u0027v2.0\u0027","commit_id":"871a215cfdb1942fe4a965a810aa2cfce799a2d9"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fadee8d06c5be917f7f581f3782834fb531a50d8","unresolved":false,"context_lines":[{"line_number":1459,"context_line":"        self._adapter \u003d adap"},{"line_number":1460,"context_line":"        self._include_service_catalog \u003d include_service_catalog"},{"line_number":1461,"context_line":"        self._requested_auth_version \u003d ("},{"line_number":1462,"context_line":"            requested_auth_version or DEFAULT_AUTH_VERSION)"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"        if auth_uri is None:"},{"line_number":1465,"context_line":"            self._LOG.warning("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_8d6948fb","line":1462,"updated":"2014-12-22 11:21:08.000000000","message":"why this? if requested_auth_version is not set then we fall through to discovering available versions from the server. This is actually the preffered option.","commit_id":"e4de086b4cda1ef37834914d0afbe6eb098be419"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de94c6a134e285fdcad254eaaf10271cdc3b97d1","unresolved":false,"context_lines":[{"line_number":1459,"context_line":"        self._adapter \u003d adap"},{"line_number":1460,"context_line":"        self._include_service_catalog \u003d include_service_catalog"},{"line_number":1461,"context_line":"        self._requested_auth_version \u003d ("},{"line_number":1462,"context_line":"            requested_auth_version or DEFAULT_AUTH_VERSION)"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"        if auth_uri is None:"},{"line_number":1465,"context_line":"            self._LOG.warning("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_74230005","line":1462,"in_reply_to":"3a961159_8d6948fb","updated":"2014-12-22 14:26:32.000000000","message":"the requested_auth_version here should really be whatever the user requested, and None if the user didn\u0027t request a version.","commit_id":"e4de086b4cda1ef37834914d0afbe6eb098be419"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de94c6a134e285fdcad254eaaf10271cdc3b97d1","unresolved":false,"context_lines":[{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"    def _get_strategy_class(self):"},{"line_number":1499,"context_line":"        normalize_version \u003d discover.normalize_version_number("},{"line_number":1500,"context_line":"            self._requested_auth_version)"},{"line_number":1501,"context_line":""},{"line_number":1502,"context_line":"        if discover.version_match((3,), normalize_version):"},{"line_number":1503,"context_line":"            return _V3RequestStrategy"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_1459dc8d","line":1500,"updated":"2014-12-22 14:26:32.000000000","message":"The _requested_auth_version should be the normalized version to begin with, so normalizing the version number should be done where _IdentityServer() is called (right before line 1358).","commit_id":"e4de086b4cda1ef37834914d0afbe6eb098be419"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fadee8d06c5be917f7f581f3782834fb531a50d8","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"        elif self._requested_auth_version:"},{"line_number":1505,"context_line":"            return _V2RequestStrategy"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        for klass in _REQUEST_STRATEGIES:"},{"line_number":1508,"context_line":"            if self._adapter.get_endpoint(version\u003dklass.AUTH_VERSION):"},{"line_number":1509,"context_line":"                msg \u003d _LI(\u0027Auth Token confirmed use of %s apis\u0027)"},{"line_number":1510,"context_line":"                self._LOG.info(msg, self._requested_auth_version)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_0d7558ca","line":1507,"updated":"2014-12-22 11:21:08.000000000","message":"discovery of versions from known....","commit_id":"e4de086b4cda1ef37834914d0afbe6eb098be419"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8485cfe3c872e2566e2686ff321d0c36215abe33","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"        return self._request_strategy_obj"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"    def _get_strategy_class(self):"},{"line_number":1499,"context_line":"        if (self._requested_auth_version is not None and"},{"line_number":1500,"context_line":"                discover.version_match((3,), self._requested_auth_version)):"},{"line_number":1501,"context_line":"            return _V3RequestStrategy"},{"line_number":1502,"context_line":"        elif self._requested_auth_version:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_b07274ae","line":1499,"updated":"2014-12-28 18:29:30.000000000","message":"The code would be clearer using:\n\n if self._requested_auth_version:\n     # A specific version was requested.\n\n     if discover.version_match((3,), self._requested_auth_version)):\n         return _V3RequestStrategy\n\n     # The version isn\u0027t v3 so we don\u0027t know what to do. Just assume V2.\n     return _V2RequestStrategy\n\nThe way it is now, `self._requested_auth_version is not None` is used here but `self._requested_auth_version` is used at line 1502, and there\u0027s no reason for the test to be different.","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8485cfe3c872e2566e2686ff321d0c36215abe33","unresolved":false,"context_lines":[{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"    def _get_strategy_class(self):"},{"line_number":1499,"context_line":"        if (self._requested_auth_version is not None and"},{"line_number":1500,"context_line":"                discover.version_match((3,), self._requested_auth_version)):"},{"line_number":1501,"context_line":"            return _V3RequestStrategy"},{"line_number":1502,"context_line":"        elif self._requested_auth_version:"},{"line_number":1503,"context_line":"            return _V2RequestStrategy"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_90b49836","line":1500,"updated":"2014-12-28 18:29:30.000000000","message":"Rather than \"(3,)\", this should be able to use _V3RequestStrategy.AUTH_VERSION.","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b40984a7701d29d74e2a7d0d22a97e4e66a49c55","unresolved":false,"context_lines":[{"line_number":1506,"context_line":"                                      self._requested_auth_version):"},{"line_number":1507,"context_line":"                return _V3RequestStrategy"},{"line_number":1508,"context_line":""},{"line_number":1509,"context_line":"            # The version isn\u0027t v3 so we don\u0027t know what to do. Just assume V2."},{"line_number":1510,"context_line":"            return _V2RequestStrategy"},{"line_number":1511,"context_line":""},{"line_number":1512,"context_line":"        # Specific version was not requested then we fall through to"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_cbbd8ad9","line":1509,"updated":"2014-12-29 16:14:56.000000000","message":"If the requested version isn\u0027t supported by auth_token then seems like auth_token should fail rather than using v2.","commit_id":"4077f6b7933813f547b1caef812055edc46f12a8"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"60054f2d4a23ebae4176c684f559b46e26c9422b","unresolved":false,"context_lines":[{"line_number":1506,"context_line":"                                      self._requested_auth_version):"},{"line_number":1507,"context_line":"                return _V3RequestStrategy"},{"line_number":1508,"context_line":""},{"line_number":1509,"context_line":"            # The version isn\u0027t v3 so we don\u0027t know what to do. Just assume V2."},{"line_number":1510,"context_line":"            return _V2RequestStrategy"},{"line_number":1511,"context_line":""},{"line_number":1512,"context_line":"        # Specific version was not requested then we fall through to"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_162faef7","line":1509,"in_reply_to":"3a961159_cbbd8ad9","updated":"2014-12-30 02:43:48.000000000","message":"I think the code here is for backward compatibility. Before, the code would be:\nif auth_version \u003d\u003d \u0027v3\u0027:\n    return xxx\nelse:\n    return yyy\n\nI am not sure whether we should break this.","commit_id":"4077f6b7933813f547b1caef812055edc46f12a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d837979aaf73654b210672a3e700ad62f17e59cf","unresolved":false,"context_lines":[{"line_number":1350,"context_line":""},{"line_number":1351,"context_line":"        auth_version \u003d self._conf_get(\u0027auth_version\u0027)"},{"line_number":1352,"context_line":"        if auth_version is not None:"},{"line_number":1353,"context_line":"            auth_version \u003d discover.normalize_version_number(auth_version)"},{"line_number":1354,"context_line":"        return _IdentityServer("},{"line_number":1355,"context_line":"            self._LOG,"},{"line_number":1356,"context_line":"            adap,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_78ad6684","line":1353,"updated":"2015-01-09 23:24:15.000000000","message":"too bad that discover.normalize_version_number doesn\u0027t accept None as a value. :(","commit_id":"4e20760a6f55e4360dd2616c5738abec2774a198"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9c5c3116bb30c4578ffe10c64d5fd3fbbbfd8c23","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"                                      self._requested_auth_version):"},{"line_number":1505,"context_line":"                return _V3RequestStrategy"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"            # The version isn\u0027t v3 so we don\u0027t know what to do. Just assume V2."},{"line_number":1508,"context_line":"            return _V2RequestStrategy"},{"line_number":1509,"context_line":""},{"line_number":1510,"context_line":"        # Specific version was not requested then we fall through to"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_e421b0b6","line":1507,"updated":"2015-01-10 06:03:40.000000000","message":"nit: s/V2/v2","commit_id":"4e20760a6f55e4360dd2616c5738abec2774a198"}],"keystonemiddleware/tests/test_auth_token_middleware.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8485cfe3c872e2566e2686ff321d0c36215abe33","unresolved":false,"context_lines":[{"line_number":2398,"context_line":"    def test_micro_version(self):"},{"line_number":2399,"context_line":"        # test v2.0 version"},{"line_number":2400,"context_line":"        self.set_middleware(conf\u003d{\u0027auth_version\u0027: \u0027v2.0\u0027})"},{"line_number":2401,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2402,"context_line":"        self.assertEqual(auth_token._V2RequestStrategy,"},{"line_number":2403,"context_line":"                         identity_server._get_strategy_class())"},{"line_number":2404,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_70e56c37","line":2401,"updated":"2014-12-28 18:29:30.000000000","message":"This would be a better unit test if _IdentityServer was created directly rather than having to ask AuthProtocol to do it.","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"40a247cf711a6e97fe9cd65fa78ac228878df4de","unresolved":false,"context_lines":[{"line_number":2398,"context_line":"    def test_micro_version(self):"},{"line_number":2399,"context_line":"        # test v2.0 version"},{"line_number":2400,"context_line":"        self.set_middleware(conf\u003d{\u0027auth_version\u0027: \u0027v2.0\u0027})"},{"line_number":2401,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2402,"context_line":"        self.assertEqual(auth_token._V2RequestStrategy,"},{"line_number":2403,"context_line":"                         identity_server._get_strategy_class())"},{"line_number":2404,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_93010209","line":2401,"in_reply_to":"3a961159_70e56c37","updated":"2014-12-29 02:35:52.000000000","message":"I think I need test AuthProtocol too, because in this patch I modify his code too.","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17d4f5601911dffdc16d6084786324b2bc0744e0","unresolved":false,"context_lines":[{"line_number":2398,"context_line":"    def test_micro_version(self):"},{"line_number":2399,"context_line":"        # test v2.0 version"},{"line_number":2400,"context_line":"        self.set_middleware(conf\u003d{\u0027auth_version\u0027: \u0027v2.0\u0027})"},{"line_number":2401,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2402,"context_line":"        self.assertEqual(auth_token._V2RequestStrategy,"},{"line_number":2403,"context_line":"                         identity_server._get_strategy_class())"},{"line_number":2404,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_f61eb45e","line":2401,"in_reply_to":"3a961159_93010209","updated":"2014-12-29 02:48:06.000000000","message":"The only thing that AuthProtocol does is parse the auth_version. A test can be written to verify that AuthProtocol does that without also testing the internals of auth_token.","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"cbf74f8ad0add3f25524fafe1692a317d92ad834","unresolved":false,"context_lines":[{"line_number":2398,"context_line":"    def test_micro_version(self):"},{"line_number":2399,"context_line":"        # test v2.0 version"},{"line_number":2400,"context_line":"        self.set_middleware(conf\u003d{\u0027auth_version\u0027: \u0027v2.0\u0027})"},{"line_number":2401,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2402,"context_line":"        self.assertEqual(auth_token._V2RequestStrategy,"},{"line_number":2403,"context_line":"                         identity_server._get_strategy_class())"},{"line_number":2404,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_44cc328b","line":2401,"in_reply_to":"3a961159_f61eb45e","updated":"2014-12-29 08:36:22.000000000","message":"But, I think that the test should test the use cases of normal users and users specify requested_auth_version via conf.","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8485cfe3c872e2566e2686ff321d0c36215abe33","unresolved":false,"context_lines":[{"line_number":2400,"context_line":"        self.set_middleware(conf\u003d{\u0027auth_version\u0027: \u0027v2.0\u0027})"},{"line_number":2401,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2402,"context_line":"        self.assertEqual(auth_token._V2RequestStrategy,"},{"line_number":2403,"context_line":"                         identity_server._get_strategy_class())"},{"line_number":2404,"context_line":""},{"line_number":2405,"context_line":"        # test v3.0 version"},{"line_number":2406,"context_line":"        self.set_middleware(conf\u003d{\u0027auth_version\u0027: \u0027v3.0\u0027})"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_708e4c7b","line":2403,"updated":"2014-12-28 18:29:30.000000000","message":"The strategy class isn\u0027t what\u0027s important here, it\u0027s the version that was chosen. So rather than compare the class types, compare the AUTH_VERSION in the class.\n\n self.assertEqual(\n     auth_token._V2RequestStrategy.AUTH_VERSION, \n     identity_server._get_strategy_class().AUTH_VERSION)\n\nSince _request_strategy creates the strategy instance, use\n\n self.assertEqual(\n     auth_token._V2RequestStrategy.AUTH_VERSION, \n     identity_server._request_strategy.AUTH_VERSION)\n\nAdd a .auth_version property on _IdentityServer to make it look better:\n\n self.assertEqual(\n     auth_token._V2RequestStrategy.AUTH_VERSION, \n     identity_server.auth_version)\n\nAlso, I don\u0027t like using auth_token._V2RequestStrategy.AUTH_VERSION since we might add new strategies, so how aobut just compare the tuple?\n\n self.assertEqual((2,0), identity_server.auth_version)","commit_id":"c6458db3bd91416e89e9abe1cce464b7dab0a302"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1a871f8f40ee35070299ba37d7f396f87de3393","unresolved":false,"context_lines":[{"line_number":2421,"context_line":"                         identity_server.auth_version)"},{"line_number":2422,"context_line":""},{"line_number":2423,"context_line":"        # test default None version"},{"line_number":2424,"context_line":"        self.requests.get(BASE_URI, json\u003dVERSION_LIST_v3, status_code\u003d300)"},{"line_number":2425,"context_line":"        self.set_middleware()"},{"line_number":2426,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2427,"context_line":"        self.assertEqual((3, 0),"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_2bc28e86","line":2424,"updated":"2014-12-29 16:11:59.000000000","message":"It would make me feel safer to have a test where only v2 is returned and also where both v2 and v3 are returned.","commit_id":"4077f6b7933813f547b1caef812055edc46f12a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1a871f8f40ee35070299ba37d7f396f87de3393","unresolved":false,"context_lines":[{"line_number":2425,"context_line":"        self.set_middleware()"},{"line_number":2426,"context_line":"        identity_server \u003d self.middleware._create_identity_server()"},{"line_number":2427,"context_line":"        self.assertEqual((3, 0),"},{"line_number":2428,"context_line":"                         identity_server.auth_version)"},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":""},{"line_number":2431,"context_line":"class DefaultAuthPluginTests(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_eb0de6e9","line":2428,"updated":"2014-12-29 16:11:59.000000000","message":"There should also be a test where auth_version is set to other strings that someone might try to configure: \u0027v4\u0027, \u0027v1\u0027, \u0027v2\u0027, \u0027v3\u0027. This would be easier if there was a function to do the test. Then the comments \"test v3.1 version\", etc., wouldn\u0027t be needed since it would be obvious.","commit_id":"4077f6b7933813f547b1caef812055edc46f12a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d837979aaf73654b210672a3e700ad62f17e59cf","unresolved":false,"context_lines":[{"line_number":2410,"context_line":"        self._assert_auth_version(\u0027v3.2\u0027, (3, 0))"},{"line_number":2411,"context_line":"        self._assert_auth_version(\u0027v3.9\u0027, (3, 0))"},{"line_number":2412,"context_line":"        self._assert_auth_version(\u0027v3.3.1\u0027, (3, 0))"},{"line_number":2413,"context_line":"        self._assert_auth_version(\u0027v3.3.5\u0027, (3, 0))"},{"line_number":2414,"context_line":""},{"line_number":2415,"context_line":"    def test_default_auth_version(self):"},{"line_number":2416,"context_line":"        # VERSION_LIST_v3 contains both v2 and v3 version elements"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_38011e6e","line":2413,"updated":"2015-01-09 23:24:15.000000000","message":"this could be done with map()","commit_id":"4e20760a6f55e4360dd2616c5738abec2774a198"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d837979aaf73654b210672a3e700ad62f17e59cf","unresolved":false,"context_lines":[{"line_number":2417,"context_line":"        self.requests.get(BASE_URI, json\u003dVERSION_LIST_v3, status_code\u003d300)"},{"line_number":2418,"context_line":"        self._assert_auth_version(None, (3, 0))"},{"line_number":2419,"context_line":""},{"line_number":2420,"context_line":"        # VERSION_LIST_v2 contains only v2 version elements"},{"line_number":2421,"context_line":"        self.requests.get(BASE_URI, json\u003dVERSION_LIST_v2, status_code\u003d300)"},{"line_number":2422,"context_line":"        self._assert_auth_version(None, (2, 0))"},{"line_number":2423,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_d8f1fa97","line":2420,"updated":"2015-01-09 23:24:15.000000000","message":"we know.","commit_id":"4e20760a6f55e4360dd2616c5738abec2774a198"}]}
