)]}'
{"keystone/catalog/backends/sql.py":[{"author":{"_account_id":4411,"name":"stef-ummon","email":"stelford@internap.com","username":"stef-ummon"},"change_message_id":"b07c1373249cddd6c31817ec53f8c73756981b3f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                internal_url \u003d ep[\u0027internalurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":160,"context_line":"                catalog[region][srv_type][\u0027internalURL\u0027] \u003d internal_url % d"},{"line_number":161,"context_line":"            except KeyError:"},{"line_number":162,"context_line":"                pass"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            try:"},{"line_number":165,"context_line":"                public_url \u003d ep[\u0027publicurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FNQw%3D","line":162,"updated":"2012-10-04 21:13:56.000000000","message":"Any reason you are using try..except for KeyErrors rather than doing a \u0027has_key\u0027 check ? something like;\n\nif ep.has_key(\"internalurl\") and ep[\u0027internalurl\u0027]:   \n    ep[\u0027internalurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)\n\nsame goes for the other 3.","commit_id":"50eaade957dd89631b929da6f2962214e2cfbbb7"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"5005d4e23df249b9db23f8a77ac80cc526f5b920","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                internal_url \u003d ep[\u0027internalurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":160,"context_line":"                catalog[region][srv_type][\u0027internalURL\u0027] \u003d internal_url % d"},{"line_number":161,"context_line":"            except KeyError:"},{"line_number":162,"context_line":"                pass"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            try:"},{"line_number":165,"context_line":"                public_url \u003d ep[\u0027publicurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FNNc%3D","line":162,"in_reply_to":"AAAALH%2F%2FNQw%3D","updated":"2012-10-04 22:12:33.000000000","message":"Done","commit_id":"50eaade957dd89631b929da6f2962214e2cfbbb7"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a0edffa8fbe1c5ba6be848185f649f1642580608","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            catalog[region][srv_type] \u003d {}"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if \"internalurl\" in ep and ep[\u0027internalurl\u0027]:"},{"line_number":159,"context_line":"                internal_url \u003d ep[\u0027internalurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":160,"context_line":"                catalog[region][srv_type][\u0027internalURL\u0027] \u003d internal_url % d"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FMxE%3D","line":158,"updated":"2012-10-05 16:59:49.000000000","message":"use single quotes (see HACKING); can also simplify this as\n\n    if ep.get(\u0027internalurl\u0027) is not None:","commit_id":"c059f287e2c245dcdae48b28c1fa3f1d7942ec21"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3dc6869367f6ed9afba97cf8e11e4f6b03c3dacf","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            catalog[region][srv_type] \u003d {}"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if \"internalurl\" in ep and ep[\u0027internalurl\u0027]:"},{"line_number":159,"context_line":"                internal_url \u003d ep[\u0027internalurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":160,"context_line":"                catalog[region][srv_type][\u0027internalURL\u0027] \u003d internal_url % d"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FMZU%3D","line":158,"in_reply_to":"AAAALH%2F%2FMxE%3D","updated":"2012-10-06 07:43:50.000000000","message":"Done","commit_id":"c059f287e2c245dcdae48b28c1fa3f1d7942ec21"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a0edffa8fbe1c5ba6be848185f649f1642580608","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            if \"publicurl\" in ep and ep[\u0027publicurl\u0027]:"},{"line_number":163,"context_line":"                public_url \u003d ep[\u0027publicurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":164,"context_line":"                catalog[region][srv_type][\u0027publicURL\u0027] \u003d public_url % d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            if \"adminurl\" in ep and ep[\u0027adminurl\u0027]:"},{"line_number":167,"context_line":"                admin_url \u003d ep[\u0027adminurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FMwM%3D","line":164,"updated":"2012-10-05 16:59:49.000000000","message":"public URL is specifically required by the API, so this change is potentially contract breaking if the user has not specified one. If a public URL is not provided, an empty string should at least be included in the catalog (a null value would be excluded from the xml transformation)","commit_id":"c059f287e2c245dcdae48b28c1fa3f1d7942ec21"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3dc6869367f6ed9afba97cf8e11e4f6b03c3dacf","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            if \"publicurl\" in ep and ep[\u0027publicurl\u0027]:"},{"line_number":163,"context_line":"                public_url \u003d ep[\u0027publicurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":164,"context_line":"                catalog[region][srv_type][\u0027publicURL\u0027] \u003d public_url % d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            if \"adminurl\" in ep and ep[\u0027adminurl\u0027]:"},{"line_number":167,"context_line":"                admin_url \u003d ep[\u0027adminurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FMZQ%3D","line":164,"in_reply_to":"AAAALH%2F%2FMwM%3D","updated":"2012-10-06 07:43:50.000000000","message":"Done","commit_id":"c059f287e2c245dcdae48b28c1fa3f1d7942ec21"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ac875739167185df8170e2483e197979484ec74a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            if ep.get(\u0027publicurl\u0027) is None:"},{"line_number":162,"context_line":"                srv_type[\u0027publicURL\u0027] \u003d \u0027\u0027"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                public_url \u003d ep[\u0027publicurl\u0027].replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":165,"context_line":"                srv_type[\u0027publicURL\u0027] \u003d core.format_url(public_url, d)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            if ep.get(\u0027internalurl\u0027) is not None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FMCo%3D","line":164,"updated":"2012-10-08 09:13:56.000000000","message":"(suggested refactor) the .replace(\u0027$(\u0027, \u0027%(\u0027) stuff now belongs in core.format_url :), so this can be simplified as:\n\n    srv_type[\u0027publicURL\u0027] \u003d core.format_url(ep[\u0027publicurl\u0027], d)","commit_id":"e3686aef1accafe1044c2cdb26667c14667831ec"}],"keystone/catalog/backends/templated.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b2a086db254f117e78755f900d28520793b945af","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            for service, service_ref in region_ref.iteritems():"},{"line_number":121,"context_line":"                o[region][service] \u003d {}"},{"line_number":122,"context_line":"                for k, v in service_ref.iteritems():"},{"line_number":123,"context_line":"                    v \u003d v.replace(\u0027$(\u0027, \u0027%(\u0027)"},{"line_number":124,"context_line":"                    o[region][service][k] \u003d core.format_url(v, d)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        return o"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL9w%3D","side":"PARENT","line":123,"updated":"2012-10-08 11:37:06.000000000","message":"awesome","commit_id":"e7fdf934f5a082dc58a542b54e1eb24b9054af2d"}],"keystone/catalog/core.py":[{"author":{"_account_id":4411,"name":"stef-ummon","email":"stelford@internap.com","username":"stef-ummon"},"change_message_id":"ba7ff238bc3312fd9f362640ccd39b83f09d0fdc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def format_url(url, data):"},{"line_number":37,"context_line":"    \"\"\"Helper Method for all Backend Catalog\u0027s to Deal with URLS\"\"\""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        result \u003d url.replace(\u0027$(\u0027, \u0027%(\u0027) % data"},{"line_number":40,"context_line":"    except KeyError as e:"},{"line_number":41,"context_line":"        LOG.error(\"Malformed endpoint %s - unknown key %s\" %"},{"line_number":42,"context_line":"                  (url, str(e)))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FL6I%3D","line":39,"updated":"2012-10-08 14:10:46.000000000","message":"this change can cause AttributeError to be flung if the url is None. Not sure how likely this is, and since all the jenkins passed, I am thinking this is more of a \u0027defensive coding suggestion\u0027. feel free to implement/ignore.\n\nmoving the replace in here though does cut down on repetitive code elsewhere so +1 there.","commit_id":"76f22f027f4c3e82fed456f398de72450b61cad5"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e3cab689f5664bba7656540bcee8411a0d9c0b06","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def format_url(url, data):"},{"line_number":37,"context_line":"    \"\"\"Helper Method for all Backend Catalog\u0027s to Deal with URLS\"\"\""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        result \u003d url.replace(\u0027$(\u0027, \u0027%(\u0027) % data"},{"line_number":40,"context_line":"    except KeyError as e:"},{"line_number":41,"context_line":"        LOG.error(\"Malformed endpoint %s - unknown key %s\" %"},{"line_number":42,"context_line":"                  (url, str(e)))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FLxQ%3D","line":39,"in_reply_to":"AAAALH%2F%2FL3E%3D","updated":"2012-10-08 16:16:59.000000000","message":"Done","commit_id":"76f22f027f4c3e82fed456f398de72450b61cad5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"3e42252d686bea9a0e954d663e37d9190fa4e7a9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def format_url(url, data):"},{"line_number":37,"context_line":"    \"\"\"Helper Method for all Backend Catalog\u0027s to Deal with URLS\"\"\""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        result \u003d url.replace(\u0027$(\u0027, \u0027%(\u0027) % data"},{"line_number":40,"context_line":"    except KeyError as e:"},{"line_number":41,"context_line":"        LOG.error(\"Malformed endpoint %s - unknown key %s\" %"},{"line_number":42,"context_line":"                  (url, str(e)))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FL3E%3D","line":39,"in_reply_to":"AAAALH%2F%2FL4U%3D","updated":"2012-10-08 15:16:08.000000000","message":"Hmm... if you caught AttributeError here (and silently returned None in that case), that would simplify the non-publicurl cases.","commit_id":"76f22f027f4c3e82fed456f398de72450b61cad5"},{"author":{"_account_id":4411,"name":"stef-ummon","email":"stelford@internap.com","username":"stef-ummon"},"change_message_id":"f8538eb50d79e8b1bcabfaae65640bdf59d8dd4a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def format_url(url, data):"},{"line_number":37,"context_line":"    \"\"\"Helper Method for all Backend Catalog\u0027s to Deal with URLS\"\"\""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        result \u003d url.replace(\u0027$(\u0027, \u0027%(\u0027) % data"},{"line_number":40,"context_line":"    except KeyError as e:"},{"line_number":41,"context_line":"        LOG.error(\"Malformed endpoint %s - unknown key %s\" %"},{"line_number":42,"context_line":"                  (url, str(e)))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FL4U%3D","line":39,"in_reply_to":"AAAALH%2F%2FL5A%3D","updated":"2012-10-08 14:57:35.000000000","message":"Totally understand that the SQL code has the guards in place. My only concern was that if another backend used this without those guards in the future. As I said, totally a defensive programming thing/nitpick, and not worth blocking over :)","commit_id":"76f22f027f4c3e82fed456f398de72450b61cad5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5de14eef1c791b24a5d85aa9509b84b92c581178","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def format_url(url, data):"},{"line_number":37,"context_line":"    \"\"\"Helper Method for all Backend Catalog\u0027s to Deal with URLS\"\"\""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        result \u003d url.replace(\u0027$(\u0027, \u0027%(\u0027) % data"},{"line_number":40,"context_line":"    except KeyError as e:"},{"line_number":41,"context_line":"        LOG.error(\"Malformed endpoint %s - unknown key %s\" %"},{"line_number":42,"context_line":"                  (url, str(e)))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FL5A%3D","line":39,"in_reply_to":"AAAALH%2F%2FL6I%3D","updated":"2012-10-08 14:41:09.000000000","message":"This same commit guards against that in the SQL backend, and I don\u0027t think it\u0027s possible at all in the templated backend -- correct me if I\u0027m wrong.","commit_id":"76f22f027f4c3e82fed456f398de72450b61cad5"}],"tests/test_backend.py":[{"author":{"_account_id":4411,"name":"stef-ummon","email":"stelford@internap.com","username":"stef-ummon"},"change_message_id":"4804a9261ce94fb4fa565dd0f1b7c0dab0ee8129","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        services \u003d self.catalog_api.list_services()"},{"line_number":817,"context_line":"        self.assertEqual(3, len(services))"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"    def test_get_catalog(self):"},{"line_number":820,"context_line":"        new_service \u003d {"},{"line_number":821,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":822,"context_line":"            \u0027type\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FMI0%3D","line":819,"updated":"2012-10-08 02:46:08.000000000","message":"should the tests not be testing the publicURL, adminURL and internalURL ? The test now no longer accurately reflects the changes you made :(","commit_id":"2eb0456ddcf4308ea6d071f433f39efa2fa85c17"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b2a086db254f117e78755f900d28520793b945af","unresolved":false,"context_lines":[{"line_number":832,"context_line":"        services \u003d self.catalog_api.list_services()"},{"line_number":833,"context_line":"        self.assertEqual(3, len(services))"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def test_get_catalog(self):"},{"line_number":836,"context_line":"        new_service \u003d {"},{"line_number":837,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":838,"context_line":"            \u0027type\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL94%3D","line":835,"updated":"2012-10-08 11:37:06.000000000","message":"test_get_catalog_without_endpoints?","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1b632bc5ac3a01a7015e316806952d6d20249684","unresolved":false,"context_lines":[{"line_number":832,"context_line":"        services \u003d self.catalog_api.list_services()"},{"line_number":833,"context_line":"        self.assertEqual(3, len(services))"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def test_get_catalog(self):"},{"line_number":836,"context_line":"        new_service \u003d {"},{"line_number":837,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":838,"context_line":"            \u0027type\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL9Y%3D","line":835,"in_reply_to":"AAAALH%2F%2FL94%3D","updated":"2012-10-08 12:00:55.000000000","message":"Done","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b2a086db254f117e78755f900d28520793b945af","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                         new_service[\u0027name\u0027])"},{"line_number":864,"context_line":"        self.assertEqual(catalog[region][service_type][\u0027id\u0027],"},{"line_number":865,"context_line":"                         new_endpoint[\u0027id\u0027])"},{"line_number":866,"context_line":"        self.assertNotEqual(catalog[region][service_type][\u0027publicURL\u0027],"},{"line_number":867,"context_line":"                            None)"},{"line_number":868,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027adminURL\u0027),"},{"line_number":869,"context_line":"                         None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL%2BE%3D","line":866,"updated":"2012-10-08 11:37:06.000000000","message":"assertEqual to \u0027\u0027","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1b632bc5ac3a01a7015e316806952d6d20249684","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                         new_service[\u0027name\u0027])"},{"line_number":864,"context_line":"        self.assertEqual(catalog[region][service_type][\u0027id\u0027],"},{"line_number":865,"context_line":"                         new_endpoint[\u0027id\u0027])"},{"line_number":866,"context_line":"        self.assertNotEqual(catalog[region][service_type][\u0027publicURL\u0027],"},{"line_number":867,"context_line":"                            None)"},{"line_number":868,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027adminURL\u0027),"},{"line_number":869,"context_line":"                         None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL88%3D","line":866,"in_reply_to":"AAAALH%2F%2FL%2BE%3D","updated":"2012-10-08 12:00:55.000000000","message":"Done","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b2a086db254f117e78755f900d28520793b945af","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                         new_endpoint[\u0027id\u0027])"},{"line_number":866,"context_line":"        self.assertNotEqual(catalog[region][service_type][\u0027publicURL\u0027],"},{"line_number":867,"context_line":"                            None)"},{"line_number":868,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027adminURL\u0027),"},{"line_number":869,"context_line":"                         None)"},{"line_number":870,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027internalURL\u0027),"},{"line_number":871,"context_line":"                         None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL%2BA%3D","line":868,"updated":"2012-10-08 11:37:06.000000000","message":"assertIsNone or assertNotIn(\u0027adminURL\u0027, catalog[region][service_type])?","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1b632bc5ac3a01a7015e316806952d6d20249684","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                         new_endpoint[\u0027id\u0027])"},{"line_number":866,"context_line":"        self.assertNotEqual(catalog[region][service_type][\u0027publicURL\u0027],"},{"line_number":867,"context_line":"                            None)"},{"line_number":868,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027adminURL\u0027),"},{"line_number":869,"context_line":"                         None)"},{"line_number":870,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027internalURL\u0027),"},{"line_number":871,"context_line":"                         None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL84%3D","line":868,"in_reply_to":"AAAALH%2F%2FL%2BA%3D","updated":"2012-10-08 12:00:55.000000000","message":"Done","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b2a086db254f117e78755f900d28520793b945af","unresolved":false,"context_lines":[{"line_number":867,"context_line":"                            None)"},{"line_number":868,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027adminURL\u0027),"},{"line_number":869,"context_line":"                         None)"},{"line_number":870,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027internalURL\u0027),"},{"line_number":871,"context_line":"                         None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL90%3D","line":870,"updated":"2012-10-08 11:37:06.000000000","message":"same as 868","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1b632bc5ac3a01a7015e316806952d6d20249684","unresolved":false,"context_lines":[{"line_number":867,"context_line":"                            None)"},{"line_number":868,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027adminURL\u0027),"},{"line_number":869,"context_line":"                         None)"},{"line_number":870,"context_line":"        self.assertEqual(catalog[region][service_type].get(\u0027internalURL\u0027),"},{"line_number":871,"context_line":"                         None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2FL80%3D","line":870,"in_reply_to":"AAAALH%2F%2FL90%3D","updated":"2012-10-08 12:00:55.000000000","message":"Done","commit_id":"52707ce4604bb1cc69235db50818155eb30bb047"}]}
