)]}'
{"glanceclient/common/utils.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7990925e4b1b8d41a1ea40132a3b21c599e8d37f","unresolved":false,"context_lines":[{"line_number":482,"context_line":""},{"line_number":483,"context_line":"class RequestIdProxy(wrapt.ObjectProxy):"},{"line_number":484,"context_line":"    def __init__(self, wrapped):"},{"line_number":485,"context_line":"        # `wrapped` is a tuple: (original_obj, response_obj)"},{"line_number":486,"context_line":"        super(RequestIdProxy, self).__init__(wrapped[0])"},{"line_number":487,"context_line":"        self._self_wrapped \u003d wrapped[0]"},{"line_number":488,"context_line":"        req_id \u003d _extract_request_id(wrapped[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_24aaec70","line":485,"range":{"start_line":485,"start_character":7,"end_line":485,"end_character":60},"updated":"2016-08-29 06:49:12.000000000","message":"nit.\nLet make the docstring more \"pretty\".\nMaybe like like line 63[1].\n\n[1]: https://review.openstack.org/#/c/352892/1/glanceclient/common/utils.py@63","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7990925e4b1b8d41a1ea40132a3b21c599e8d37f","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"class GeneratorProxy(wrapt.ObjectProxy):"},{"line_number":501,"context_line":"    def __init__(self, wrapped):"},{"line_number":502,"context_line":"        # `wrapped` is a decorator object"},{"line_number":503,"context_line":"        super(GeneratorProxy, self).__init__(wrapped)"},{"line_number":504,"context_line":"        self._self_wrapped \u003d wrapped"},{"line_number":505,"context_line":"        self._self_request_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_a4b43cd1","line":502,"range":{"start_line":502,"start_character":25,"end_line":502,"end_character":34},"updated":"2016-08-29 06:49:12.000000000","message":"generator?","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7990925e4b1b8d41a1ea40132a3b21c599e8d37f","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        return self._self_wrapped"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"def add_req_id_to_object(func, *args, **kwargs):"},{"line_number":539,"context_line":"    def inner(*args, **kwargs):"},{"line_number":540,"context_line":"        return RequestIdProxy(func(*args, **kwargs))"},{"line_number":541,"context_line":"    return inner"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_673b169d","line":538,"range":{"start_line":538,"start_character":4,"end_line":538,"end_character":24},"updated":"2016-08-29 06:49:12.000000000","message":"The wrap idea looks good to me.\nI think this would be better:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\ndef add_req_id_to_object(func, *args, **kwargs):\n    @functools.wraps(func)\n    def inner(*args, **kwargs):\n        return RequestIdProxy(func(*args, **kwargs))\n    return inner\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"cb97b90a64e916cf79a1c05bcdbc2c725eae5aeb","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"def add_req_id_to_object(func, *args, **kwargs):"},{"line_number":533,"context_line":"    @functools.wraps(func)"},{"line_number":534,"context_line":"    def inner(*args, **kwargs):"},{"line_number":535,"context_line":"        return RequestIdProxy(func(*args, **kwargs))"},{"line_number":536,"context_line":"    return inner"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_5d6d6203","line":533,"updated":"2017-01-19 16:26:28.000000000","message":"We should wrapt.decorator here since we\u0027re already using the wrapt module above. It is much better than @functools.wraps. This could probably be done in a follow up patch though.","commit_id":"b8078f84ecc3d20a5a0a1c65c7cebd59512bfad2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e73fe52f20e626933b4fdde9f9436b5ac017c083","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"def add_req_id_to_object(func, *args, **kwargs):"},{"line_number":533,"context_line":"    @functools.wraps(func)"},{"line_number":534,"context_line":"    def inner(*args, **kwargs):"},{"line_number":535,"context_line":"        return RequestIdProxy(func(*args, **kwargs))"},{"line_number":536,"context_line":"    return inner"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_e771f0a9","line":533,"in_reply_to":"5a3905b3_5d6d6203","updated":"2017-01-20 09:45:23.000000000","message":"Done","commit_id":"b8078f84ecc3d20a5a0a1c65c7cebd59512bfad2"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"cb97b90a64e916cf79a1c05bcdbc2c725eae5aeb","unresolved":false,"context_lines":[{"line_number":537,"context_line":""},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"def add_req_id_to_generator(func, *args, **kwargs):"},{"line_number":540,"context_line":"    @functools.wraps(func)"},{"line_number":541,"context_line":"    def inner(*args, **kwargs):"},{"line_number":542,"context_line":"        return GeneratorProxy(func(*args, **kwargs))"},{"line_number":543,"context_line":"    return inner"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_7d721ee7","line":540,"updated":"2017-01-19 16:26:28.000000000","message":"Same here","commit_id":"b8078f84ecc3d20a5a0a1c65c7cebd59512bfad2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e73fe52f20e626933b4fdde9f9436b5ac017c083","unresolved":false,"context_lines":[{"line_number":537,"context_line":""},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"def add_req_id_to_generator(func, *args, **kwargs):"},{"line_number":540,"context_line":"    @functools.wraps(func)"},{"line_number":541,"context_line":"    def inner(*args, **kwargs):"},{"line_number":542,"context_line":"        return GeneratorProxy(func(*args, **kwargs))"},{"line_number":543,"context_line":"    return inner"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_07699cbe","line":540,"in_reply_to":"5a3905b3_7d721ee7","updated":"2017-01-20 09:45:23.000000000","message":"Done","commit_id":"b8078f84ecc3d20a5a0a1c65c7cebd59512bfad2"}],"glanceclient/tests/unit/v2/base.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"cb97b90a64e916cf79a1c05bcdbc2c725eae5aeb","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # For generator cases the request_ids property will be an empty list"},{"line_number":29,"context_line":"        # until the underlying generator is invoked at-least once."},{"line_number":30,"context_line":"        resources \u003d list(gen_obj)"},{"line_number":31,"context_line":"        # If list is empty that means geneator object has raised StopIteration"},{"line_number":32,"context_line":"        # for first iteration and will not contain the request_id in it."},{"line_number":33,"context_line":"        if len(resources) \u003e 0:"},{"line_number":34,"context_line":"            self._assertRequestId(gen_obj)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_9d77cad3","line":31,"updated":"2017-01-19 16:26:28.000000000","message":"This comment is in an odd place. I\u0027d expect it to be next to the code it\u0027s describing, e.g., inside the else block below","commit_id":"b8078f84ecc3d20a5a0a1c65c7cebd59512bfad2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e73fe52f20e626933b4fdde9f9436b5ac017c083","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # For generator cases the request_ids property will be an empty list"},{"line_number":29,"context_line":"        # until the underlying generator is invoked at-least once."},{"line_number":30,"context_line":"        resources \u003d list(gen_obj)"},{"line_number":31,"context_line":"        # If list is empty that means geneator object has raised StopIteration"},{"line_number":32,"context_line":"        # for first iteration and will not contain the request_id in it."},{"line_number":33,"context_line":"        if len(resources) \u003e 0:"},{"line_number":34,"context_line":"            self._assertRequestId(gen_obj)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_879bccc8","line":31,"in_reply_to":"5a3905b3_9d77cad3","updated":"2017-01-20 09:45:23.000000000","message":"Done","commit_id":"b8078f84ecc3d20a5a0a1c65c7cebd59512bfad2"}],"glanceclient/tests/unit/v2/test_images.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"a03f50db2a7a4313f2f08d2a4e73ace0d5bf5a2a","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        self.assertEqual(\u00276f99bf80-2ee6-47cf-acfe-1f1fabb7e810\u0027, images[1].id)"},{"line_number":548,"context_line":"        self.assertEqual(\u0027image-2\u0027, images[1].name)"},{"line_number":549,"context_line":"        self._assert_request_id(generator_obj)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def test_list_images_paginated(self):"},{"line_number":553,"context_line":"        generator_obj \u003d self.controller.list(page_size\u003d1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_b46491e5","line":550,"range":{"start_line":550,"start_character":0,"end_line":550,"end_character":0},"updated":"2016-09-06 05:48:33.000000000","message":"We need only one blank line here.","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"a03f50db2a7a4313f2f08d2a4e73ace0d5bf5a2a","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"            self._patch_req(image_id, expected_body),"},{"line_number":1146,"context_line":"            self._empty_get(image_id)"},{"line_number":1147,"context_line":"        ]"},{"line_number":1148,"context_line":"        self.assertEqual(expected, self.api.calls)"},{"line_number":1149,"context_line":"        self.assertEqual(image_id, image.id)"},{"line_number":1150,"context_line":"        self._assert_request_id(image)"},{"line_number":1151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_d44f55bb","line":1148,"range":{"start_line":1148,"start_character":8,"end_line":1148,"end_character":50},"updated":"2016-09-06 05:48:33.000000000","message":"Some unit tests fail because we have \"x-openstack-request-id\" response header,.\nSo, we need to update the \"expected\" value.","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"}],"glanceclient/v2/images.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7990925e4b1b8d41a1ea40132a3b21c599e8d37f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                # NOTE(rsjethani): Store curent request id so that it can be"},{"line_number":112,"context_line":"                # used in subsequent requests. Refer bug #1525259"},{"line_number":113,"context_line":"                req_id_hdr[\u0027x-openstack-request-id\u0027] \u003d \\"},{"line_number":114,"context_line":"                    utils._extract_request_id(resp)"},{"line_number":115,"context_line":"                for image in body[\u0027images\u0027]:"},{"line_number":116,"context_line":"                    # NOTE(bcwaldon): remove \u0027self\u0027 for now until we have"},{"line_number":117,"context_line":"                    # an elegant way to pass it into the model constructor"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_ad16df52","line":114,"range":{"start_line":114,"start_character":26,"end_line":114,"end_character":45},"updated":"2016-08-29 06:49:12.000000000","message":"This function should be public, IMO.","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"}],"glanceclient/v2/metadefs.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7990925e4b1b8d41a1ea40132a3b21c599e8d37f","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        empty_fun \u003d lambda *args, **kwargs: None"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        def paginate(url):"},{"line_number":125,"context_line":"            resp, body \u003d self.http_client.get(url)"},{"line_number":126,"context_line":"            for namespace in body[\u0027namespaces\u0027]:"},{"line_number":127,"context_line":"                # NOTE(bcwaldon): remove \u0027self\u0027 for now until we have"},{"line_number":128,"context_line":"                # an elegant way to pass it into the model constructor"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_33c87022","line":125,"range":{"start_line":125,"start_character":25,"end_line":125,"end_character":50},"updated":"2016-08-29 06:49:12.000000000","message":"This function may be recursively called.\nSee line 146.\nDo we need to set http request header for it?","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"}],"glanceclient/v2/tasks.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"7990925e4b1b8d41a1ea40132a3b21c599e8d37f","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        def paginate(url):"},{"line_number":49,"context_line":"            resp, body \u003d self.http_client.get(url)"},{"line_number":50,"context_line":"            for task in body[\u0027tasks\u0027]:"},{"line_number":51,"context_line":"                yield task, resp"},{"line_number":52,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_f36368da","line":49,"range":{"start_line":49,"start_character":25,"end_line":49,"end_character":50},"updated":"2016-08-29 06:49:12.000000000","message":"This function may be recursively called. See line 57. Do we need to set http request header for it?","commit_id":"1fe689760de0abf108d94cdc26ae1950ea214e6c"}],"requirements.txt":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4b9d8e39850be07ef6ead7ee20817d66f24632fb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"six\u003e\u003d1.9.0 # MIT"},{"line_number":11,"context_line":"oslo.utils\u003e\u003d3.17.0 # Apache-2.0"},{"line_number":12,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":13,"context_line":"wrapt\u003e\u003d1.7.0 # BSD License"}],"source_content_type":"text/plain","patch_set":2,"id":"ba5da102_d5eb32da","line":13,"updated":"2016-11-03 13:55:59.000000000","message":"I verified that this has already been accepted into global-requirements.txt","commit_id":"3719b5373ae4284d8ab3a60c4d1f9d7d7ee39d17"}]}
