)]}'
{"keystoneauth1/discover.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    # That said, for sure only do this hack for officially known service_types."},{"line_number":237,"context_line":"    if (service_type and"},{"line_number":238,"context_line":"            _SERVICE_TYPES.is_known(service_type) and"},{"line_number":239,"context_line":"            service_type[-1].isdigit() and"},{"line_number":240,"context_line":"            service_type[-2] \u003d\u003d \u0027v\u0027):"},{"line_number":241,"context_line":"        implied_version \u003d normalize_version_number(service_type[-1])"},{"line_number":242,"context_line":"    else:"},{"line_number":243,"context_line":"        implied_version \u003d None"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_cfaa5870","line":241,"range":{"start_line":239,"start_character":0,"end_line":241,"end_character":68},"updated":"2018-04-26 20:30:19.000000000","message":"a regex match and capture would also work here","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    # That said, for sure only do this hack for officially known service_types."},{"line_number":237,"context_line":"    if (service_type and"},{"line_number":238,"context_line":"            _SERVICE_TYPES.is_known(service_type) and"},{"line_number":239,"context_line":"            service_type[-1].isdigit() and"},{"line_number":240,"context_line":"            service_type[-2] \u003d\u003d \u0027v\u0027):"},{"line_number":241,"context_line":"        implied_version \u003d normalize_version_number(service_type[-1])"},{"line_number":242,"context_line":"    else:"},{"line_number":243,"context_line":"        implied_version \u003d None"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_2a0e6232","line":241,"range":{"start_line":239,"start_character":0,"end_line":241,"end_character":68},"in_reply_to":"9f6a8fd7_cfaa5870","updated":"2018-04-26 21:00:18.000000000","message":"Yeah - I thought about a regex and it felt heavy weight. But I might just be weird.","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        min_version \u003d normalize_version_number(version)"},{"line_number":252,"context_line":"        max_version \u003d (min_version[0], LATEST)"},{"line_number":253,"context_line":"        if implied_version:"},{"line_number":254,"context_line":"            if min_version[0] !\u003d implied_version[0]:"},{"line_number":255,"context_line":"                raise ValueError("},{"line_number":256,"context_line":"                    \"service_type {service_type} was given which implies\""},{"line_number":257,"context_line":"                    \" major API version {api_version} but version of\""},{"line_number":258,"context_line":"                    \" {version} was also given. Please update your code\""},{"line_number":259,"context_line":"                    \" to use the official service_type {ost}.\".format("},{"line_number":260,"context_line":"                        service_type\u003dservice_type,"},{"line_number":261,"context_line":"                        api_version\u003dstr(implied_version[0]),"},{"line_number":262,"context_line":"                        version\u003dversion_to_string(version),"},{"line_number":263,"context_line":"                        ost\u003d_SERVICE_TYPES.get_service_type(service_type),"},{"line_number":264,"context_line":"                    ))"},{"line_number":265,"context_line":"        return min_version, max_version"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if min_version \u003d\u003d \u0027latest\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_0ff8507a","line":264,"range":{"start_line":254,"start_character":0,"end_line":264,"end_character":22},"updated":"2018-04-26 20:30:19.000000000","message":"1, 2, 3... factor this out for me\n\n[later] Oh, I see they each differ by one word, and message construction is bad for translation.\n\nSo...\n\nDo we not translate exceptions around here?  If not, then please factor this out :)","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        min_version \u003d normalize_version_number(version)"},{"line_number":252,"context_line":"        max_version \u003d (min_version[0], LATEST)"},{"line_number":253,"context_line":"        if implied_version:"},{"line_number":254,"context_line":"            if min_version[0] !\u003d implied_version[0]:"},{"line_number":255,"context_line":"                raise ValueError("},{"line_number":256,"context_line":"                    \"service_type {service_type} was given which implies\""},{"line_number":257,"context_line":"                    \" major API version {api_version} but version of\""},{"line_number":258,"context_line":"                    \" {version} was also given. Please update your code\""},{"line_number":259,"context_line":"                    \" to use the official service_type {ost}.\".format("},{"line_number":260,"context_line":"                        service_type\u003dservice_type,"},{"line_number":261,"context_line":"                        api_version\u003dstr(implied_version[0]),"},{"line_number":262,"context_line":"                        version\u003dversion_to_string(version),"},{"line_number":263,"context_line":"                        ost\u003d_SERVICE_TYPES.get_service_type(service_type),"},{"line_number":264,"context_line":"                    ))"},{"line_number":265,"context_line":"        return min_version, max_version"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if min_version \u003d\u003d \u0027latest\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_8a03eebe","line":264,"range":{"start_line":254,"start_character":0,"end_line":264,"end_character":22},"in_reply_to":"9f6a8fd7_0ff8507a","updated":"2018-04-26 21:00:18.000000000","message":"Good call. Factoring out coming.","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"}],"keystoneauth1/identity/base.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        allow \u003d allow or {}"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        min_version, max_version \u003d discover._normalize_version_args("},{"line_number":229,"context_line":"            None, min_version, max_version, service_type)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        # NOTE(jamielennox): if you specifically ask for requests to be sent to"},{"line_number":232,"context_line":"        # the auth url then we can ignore many of the checks. Typically if you"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_8f1220b4","line":229,"range":{"start_line":229,"start_character":44,"end_line":229,"end_character":56},"updated":"2018-04-26 20:30:19.000000000","message":"name kwargs (throughout)","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        allow \u003d allow or {}"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        min_version, max_version \u003d discover._normalize_version_args("},{"line_number":229,"context_line":"            None, min_version, max_version, service_type)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        # NOTE(jamielennox): if you specifically ask for requests to be sent to"},{"line_number":232,"context_line":"        # the auth url then we can ignore many of the checks. Typically if you"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_cf057816","line":229,"range":{"start_line":229,"start_character":44,"end_line":229,"end_character":56},"in_reply_to":"9f6a8fd7_8f1220b4","updated":"2018-04-26 21:00:18.000000000","message":"Done","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"}],"keystoneauth1/tests/unit/identity/test_identity_common.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"        # We should only try to fetch the versioned discovery url once"},{"line_number":1055,"context_line":"        self.requests_mock.get("},{"line_number":1056,"context_line":"            self.TEST_VOLUME.versions[\u0027v3\u0027].discovery.public + \u0027/\u0027, resps)"},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"        data \u003d a.get_endpoint_data(session\u003ds,"},{"line_number":1059,"context_line":"                                   service_type\u003d\u0027volumev3\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_0f261018","line":1056,"range":{"start_line":1056,"start_character":60,"end_line":1056,"end_character":66},"updated":"2018-04-26 20:30:19.000000000","message":"This seems unrelated.  If it was necessary to make things work, isn\u0027t that... bad?","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"        # We should only try to fetch the versioned discovery url once"},{"line_number":1055,"context_line":"        self.requests_mock.get("},{"line_number":1056,"context_line":"            self.TEST_VOLUME.versions[\u0027v3\u0027].discovery.public + \u0027/\u0027, resps)"},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"        data \u003d a.get_endpoint_data(session\u003ds,"},{"line_number":1059,"context_line":"                                   service_type\u003d\u0027volumev3\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_6f49cc89","line":1056,"range":{"start_line":1056,"start_character":60,"end_line":1056,"end_character":66},"in_reply_to":"9f6a8fd7_0f261018","updated":"2018-04-26 21:00:18.000000000","message":"ACTUALLY - it was a bug in the test - in that I think before it wasn\u0027t actually making a discovery call even though we thought it should. If you scan further down you\u0027ll see we add the trailing \u0027/\u0027 to the other invocations.","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"            region\u003dregion)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        # Add block-storage as a versioned endpoint so that we can test"},{"line_number":1417,"context_line":"        # versioned to unversioned inferance."},{"line_number":1418,"context_line":"        svc \u003d token.add_service(\u0027block-storage\u0027)"},{"line_number":1419,"context_line":"        svc.add_standard_endpoints("},{"line_number":1420,"context_line":"            admin\u003dself.TEST_VOLUME.versions[\u0027v3\u0027].service.admin,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_2f23d407","line":1417,"range":{"start_line":1417,"start_character":35,"end_line":1417,"end_character":44},"updated":"2018-04-26 20:30:19.000000000","message":"inference","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"            region\u003dregion)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        # Add block-storage as a versioned endpoint so that we can test"},{"line_number":1417,"context_line":"        # versioned to unversioned inferance."},{"line_number":1418,"context_line":"        svc \u003d token.add_service(\u0027block-storage\u0027)"},{"line_number":1419,"context_line":"        svc.add_standard_endpoints("},{"line_number":1420,"context_line":"            admin\u003dself.TEST_VOLUME.versions[\u0027v3\u0027].service.admin,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_ef295c9b","line":1417,"range":{"start_line":1417,"start_character":35,"end_line":1417,"end_character":44},"in_reply_to":"9f6a8fd7_2f23d407","updated":"2018-04-26 21:00:18.000000000","message":"Done","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"}],"keystoneauth1/tests/unit/test_discovery.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            self.assertEqual("},{"line_number":328,"context_line":"                (out_min, out_max),"},{"line_number":329,"context_line":"                discover._normalize_version_args("},{"line_number":330,"context_line":"                    in_ver, in_min, in_max, in_type))"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        def normalize_raises(ver, min, max, in_type):"},{"line_number":333,"context_line":"            self.assertRaises("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_0f54d053","line":330,"range":{"start_line":330,"start_character":44,"end_line":330,"end_character":51},"updated":"2018-04-26 20:30:19.000000000","message":"name kwargs","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            self.assertEqual("},{"line_number":328,"context_line":"                (out_min, out_max),"},{"line_number":329,"context_line":"                discover._normalize_version_args("},{"line_number":330,"context_line":"                    in_ver, in_min, in_max, in_type))"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        def normalize_raises(ver, min, max, in_type):"},{"line_number":333,"context_line":"            self.assertRaises("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_6a121a0c","line":330,"range":{"start_line":330,"start_character":44,"end_line":330,"end_character":51},"in_reply_to":"9f6a8fd7_0f54d053","updated":"2018-04-26 21:00:18.000000000","message":"Done","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        def normalize_raises(ver, min, max, in_type):"},{"line_number":333,"context_line":"            self.assertRaises("},{"line_number":334,"context_line":"                ValueError,"},{"line_number":335,"context_line":"                discover._normalize_version_args, ver, min, max, in_type)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        assert_min_max(None, None, None, None,"},{"line_number":338,"context_line":"                       None, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_cf4d78c5","line":335,"range":{"start_line":335,"start_character":65,"end_line":335,"end_character":72},"updated":"2018-04-26 20:30:19.000000000","message":"name kwargs","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        def normalize_raises(ver, min, max, in_type):"},{"line_number":333,"context_line":"            self.assertRaises("},{"line_number":334,"context_line":"                ValueError,"},{"line_number":335,"context_line":"                discover._normalize_version_args, ver, min, max, in_type)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        assert_min_max(None, None, None, None,"},{"line_number":338,"context_line":"                       None, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_2af422cf","line":335,"range":{"start_line":335,"start_character":65,"end_line":335,"end_character":72},"in_reply_to":"9f6a8fd7_cf4d78c5","updated":"2018-04-26 21:00:18.000000000","message":"Done","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ab78aba40d2b91248d1544e6a131aa6fd6c18f8f","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        normalize_raises(\u0027v2\u0027, None, None, \u0027volumev3\u0027)"},{"line_number":379,"context_line":"        normalize_raises(\u0027v3\u0027, None, None, \u0027volumev2\u0027)"},{"line_number":380,"context_line":"        normalize_raises(None, \u0027v2\u0027, None, \u0027volumev3\u0027)"},{"line_number":381,"context_line":"        normalize_raises(None, None, \u0027v3\u0027, \u0027volumev2\u0027)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_version_to_string(self):"},{"line_number":384,"context_line":"        def assert_string(out, inp):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_8fc5400d","line":381,"updated":"2018-04-26 20:30:19.000000000","message":"nice","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"be34e8e4bfd862be9b5f0820e220ac8eefdaf80a","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        normalize_raises(\u0027v2\u0027, None, None, \u0027volumev3\u0027)"},{"line_number":379,"context_line":"        normalize_raises(\u0027v3\u0027, None, None, \u0027volumev2\u0027)"},{"line_number":380,"context_line":"        normalize_raises(None, \u0027v2\u0027, None, \u0027volumev3\u0027)"},{"line_number":381,"context_line":"        normalize_raises(None, None, \u0027v3\u0027, \u0027volumev2\u0027)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_version_to_string(self):"},{"line_number":384,"context_line":"        def assert_string(out, inp):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_ca0006af","line":381,"in_reply_to":"9f6a8fd7_8fc5400d","updated":"2018-04-26 21:00:18.000000000","message":"\\o/","commit_id":"a30c1990e0c63684df18fe18ad8072d8d4b71d50"}]}
