)]}'
{"glanceclient/exc.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Invalid usage of CLI\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class NoUniqueMatch(BaseException):"},{"line_number":33,"context_line":"    pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2C0%3D","line":32,"updated":"2013-01-02 18:07:30.000000000","message":"Please add a docstring describing the exception.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a363bbc200c55cfe0816a11b2fd906d11e5036e0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Invalid usage of CLI\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class NoUniqueMatch(BaseException):"},{"line_number":33,"context_line":"    pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F1nM%3D","line":32,"in_reply_to":"AAAAM3%2F%2F2C0%3D","updated":"2013-01-03 07:56:03.000000000","message":"ok, I will add it.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"f72d35ede965fa04eb6079039de39150b0001cee","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class NoUniqueMatch(BaseException):"},{"line_number":33,"context_line":"    \"\"\"Unable to find unique resource\"\"\""},{"line_number":34,"context_line":"    pass"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class InvalidEndpoint(BaseException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F0t4%3D","line":34,"updated":"2013-01-03 17:26:23.000000000","message":"This pass is no longer needed - it\u0027s only a placeholder for code a code block. Now that you have a docstring, you no longer need a placeholder.","commit_id":"37a8a884528321e22cc7df27c34e083209652b10"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea7b3e5bc2c8c9161dd8ca8481e11ceb2da6ea10","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class NoUniqueMatch(BaseException):"},{"line_number":33,"context_line":"    \"\"\"Unable to find unique resource\"\"\""},{"line_number":34,"context_line":"    pass"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class InvalidEndpoint(BaseException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F0co%3D","line":34,"in_reply_to":"AAAAM3%2F%2F0t4%3D","updated":"2013-01-03 21:33:36.000000000","message":"thanks, I will remove it.","commit_id":"37a8a884528321e22cc7df27c34e083209652b10"}],"glanceclient/v1/images.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import urllib"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from glanceclient import exc"},{"line_number":23,"context_line":"from glanceclient.common import base"},{"line_number":24,"context_line":"from glanceclient.common import utils"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2D0%3D","line":22,"updated":"2013-01-02 18:07:30.000000000","message":"This import belongs at the bottom of this block.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a363bbc200c55cfe0816a11b2fd906d11e5036e0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import urllib"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from glanceclient import exc"},{"line_number":23,"context_line":"from glanceclient.common import base"},{"line_number":24,"context_line":"from glanceclient.common import utils"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F1mk%3D","line":22,"in_reply_to":"AAAAM3%2F%2F2D0%3D","updated":"2013-01-03 07:56:03.000000000","message":"ok, I will move it to the bottom of this block.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            return body"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def find(self, **kwargs):"},{"line_number":121,"context_line":"        \"\"\"Find a single item with attributes matching ``**kwargs``.\"\"\""},{"line_number":122,"context_line":"        matches \u003d self.findall(**kwargs)"},{"line_number":123,"context_line":"        num_matches \u003d len(matches)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2CU%3D","line":120,"updated":"2013-01-02 18:07:30.000000000","message":"I\u0027d like to make this specific to searching by name - would you mind calling this \u0027find_by_name\u0027?","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a363bbc200c55cfe0816a11b2fd906d11e5036e0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            return body"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def find(self, **kwargs):"},{"line_number":121,"context_line":"        \"\"\"Find a single item with attributes matching ``**kwargs``.\"\"\""},{"line_number":122,"context_line":"        matches \u003d self.findall(**kwargs)"},{"line_number":123,"context_line":"        num_matches \u003d len(matches)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F1kY%3D","line":120,"in_reply_to":"AAAAM3%2F%2F2CU%3D","updated":"2013-01-03 07:56:03.000000000","message":"Good point, I will change the name.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def find(self, **kwargs):"},{"line_number":121,"context_line":"        \"\"\"Find a single item with attributes matching ``**kwargs``.\"\"\""},{"line_number":122,"context_line":"        matches \u003d self.findall(**kwargs)"},{"line_number":123,"context_line":"        num_matches \u003d len(matches)"},{"line_number":124,"context_line":"        if num_matches \u003d\u003d 0:"},{"line_number":125,"context_line":"            raise exc.NotFound"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2CM%3D","line":122,"updated":"2013-01-02 18:07:30.000000000","message":"The list method already supports filtering by name - please use that in place of findall.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            return matches[0]"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def findall(self, **kwargs):"},{"line_number":132,"context_line":"        \"\"\"Find all items with attributes matching ``**kwargs``.\"\"\""},{"line_number":133,"context_line":"        found \u003d []"},{"line_number":134,"context_line":"        searches \u003d kwargs.items()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2CI%3D","line":131,"updated":"2013-01-02 18:07:30.000000000","message":"Assuming you are okay with my suggestion above, this method can be removed.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a363bbc200c55cfe0816a11b2fd906d11e5036e0","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            return matches[0]"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def findall(self, **kwargs):"},{"line_number":132,"context_line":"        \"\"\"Find all items with attributes matching ``**kwargs``.\"\"\""},{"line_number":133,"context_line":"        found \u003d []"},{"line_number":134,"context_line":"        searches \u003d kwargs.items()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F1iY%3D","line":131,"in_reply_to":"AAAAM3%2F%2F2CI%3D","updated":"2013-01-03 07:56:03.000000000","message":"Great, it makes the code simple. I will do it. Thank you for your review!","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"f72d35ede965fa04eb6079039de39150b0001cee","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        \"\"\"Find a single item by name.\"\"\""},{"line_number":122,"context_line":"        matches \u003d []"},{"line_number":123,"context_line":"        for obj in self.list(filters\u003d{\u0027name\u0027: name}):"},{"line_number":124,"context_line":"            matches.append(obj)"},{"line_number":125,"context_line":"        num_matches \u003d len(matches)"},{"line_number":126,"context_line":"        if num_matches \u003d\u003d 0:"},{"line_number":127,"context_line":"            raise exc.NotFound"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F0tw%3D","line":124,"updated":"2013-01-03 17:26:23.000000000","message":"This construct is a little odd, it would look cleaner if you replace the three lines above with this:\n\n  matches \u003d list(self.list(filters\u003d{\u0027name\u0027: name}))","commit_id":"37a8a884528321e22cc7df27c34e083209652b10"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea7b3e5bc2c8c9161dd8ca8481e11ceb2da6ea10","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        \"\"\"Find a single item by name.\"\"\""},{"line_number":122,"context_line":"        matches \u003d []"},{"line_number":123,"context_line":"        for obj in self.list(filters\u003d{\u0027name\u0027: name}):"},{"line_number":124,"context_line":"            matches.append(obj)"},{"line_number":125,"context_line":"        num_matches \u003d len(matches)"},{"line_number":126,"context_line":"        if num_matches \u003d\u003d 0:"},{"line_number":127,"context_line":"            raise exc.NotFound"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F0cc%3D","line":124,"in_reply_to":"AAAAM3%2F%2F0tw%3D","updated":"2013-01-03 21:33:36.000000000","message":"Nice, I will merge the above code.","commit_id":"37a8a884528321e22cc7df27c34e083209652b10"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"39bf9b19d01ea788ba9a1b21ed5744e1b3dbc248","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            return body"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def find_by_name(self, name):"},{"line_number":121,"context_line":"        \"\"\"Find a single item by name.\"\"\""},{"line_number":122,"context_line":"        matches \u003d list(self.list(filters\u003d{\u0027name\u0027: name}))"},{"line_number":123,"context_line":"        num_matches \u003d len(matches)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fyq8%3D","line":120,"updated":"2013-01-04 21:52:50.000000000","message":"Maybe we can get away without adding this function to the manager interface, since its such a thin wrapper around list.","commit_id":"184aa6d007b1d2c35f9591954c3b030b01efa5bc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c11c46ba6ca619455fa8347226d453c9be98cf75","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            return body"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def find_by_name(self, name):"},{"line_number":121,"context_line":"        \"\"\"Find a single item by name.\"\"\""},{"line_number":122,"context_line":"        matches \u003d list(self.list(filters\u003d{\u0027name\u0027: name}))"},{"line_number":123,"context_line":"        num_matches \u003d len(matches)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FygA%3D","line":120,"in_reply_to":"AAAAM3%2F%2Fyq8%3D","updated":"2013-01-04 22:36:58.000000000","message":"good point. your comment makes the patchset simple. thanks.","commit_id":"184aa6d007b1d2c35f9591954c3b030b01efa5bc"}],"glanceclient/v1/shell.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    _set_data_field(fields, args)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    image \u003d gc.images.update(image_id, purge_props\u003dargs.purge_props, **fields)"},{"line_number":287,"context_line":"    _image_show(image, args.human_readable)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2Bo%3D","side":"PARENT","line":286,"updated":"2013-01-02 18:07:30.000000000","message":"Call image.update() rather than making a second call.\n\nPlease revisit each of the changes in this module - this pattern can be applied in several more places.","commit_id":"c057fe47d6889912b7675aa54102509cd464171a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a363bbc200c55cfe0816a11b2fd906d11e5036e0","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    _set_data_field(fields, args)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    image \u003d gc.images.update(image_id, purge_props\u003dargs.purge_props, **fields)"},{"line_number":287,"context_line":"    _image_show(image, args.human_readable)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F1P4%3D","side":"PARENT","line":286,"in_reply_to":"AAAAM3%2F%2F2Bo%3D","updated":"2013-01-03 07:56:03.000000000","message":"ok, there are same problems at do_image_delete() and do_member_create() also. I will fix them.","commit_id":"c057fe47d6889912b7675aa54102509cd464171a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":143,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027, help\u003d\u0027Name or ID of image to download.\u0027)"},{"line_number":144,"context_line":"def do_image_download(gc, args):"},{"line_number":145,"context_line":"    \"\"\"Download a specific image.\"\"\""},{"line_number":146,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":147,"context_line":"    body \u003d gc.images.data(image_id)"},{"line_number":148,"context_line":"    utils.save_image(body, args.file)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2Bs%3D","line":146,"updated":"2013-01-02 18:07:30.000000000","message":"Rather than pulling the id out of the image entity and making a second API call, just call image.data() below.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a363bbc200c55cfe0816a11b2fd906d11e5036e0","unresolved":false,"context_lines":[{"line_number":143,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027, help\u003d\u0027Name or ID of image to download.\u0027)"},{"line_number":144,"context_line":"def do_image_download(gc, args):"},{"line_number":145,"context_line":"    \"\"\"Download a specific image.\"\"\""},{"line_number":146,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":147,"context_line":"    body \u003d gc.images.data(image_id)"},{"line_number":148,"context_line":"    utils.save_image(body, args.file)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F1gE%3D","line":146,"in_reply_to":"AAAAM3%2F%2F2Bs%3D","updated":"2013-01-03 07:56:03.000000000","message":"thanks, I will change it.","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"913fefc6fd9c12863bcdcb20ba04dffbe3456ae2","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    fields \u003d dict(filter(lambda x: x[1] is not None, vars(args).items()))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    image_arg \u003d fields.pop(\u0027image\u0027)"},{"line_number":272,"context_line":"    image_id \u003d utils.find_resource(gc.images, image_arg).id"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    if \u0027is_protected\u0027 in fields:"},{"line_number":275,"context_line":"        fields[\u0027protected\u0027] \u003d fields.pop(\u0027is_protected\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F2Bk%3D","line":272,"updated":"2013-01-02 18:07:30.000000000","message":"Don\u0027t pull the id off of this image entity - see my next comment...","commit_id":"ea9975b43b6a2e12e3f6d2d324a2fed0c6abc6f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"f72d35ede965fa04eb6079039de39150b0001cee","unresolved":false,"context_lines":[{"line_number":131,"context_line":"           help\u003d\u0027Print image size in a human-friendly format.\u0027)"},{"line_number":132,"context_line":"def do_image_show(gc, args):"},{"line_number":133,"context_line":"    \"\"\"Describe a specific image.\"\"\""},{"line_number":134,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":135,"context_line":"    image \u003d gc.images.get(image_id)"},{"line_number":136,"context_line":"    _image_show(image, args.human_readable)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F0tg%3D","line":134,"updated":"2013-01-03 17:26:23.000000000","message":"You don\u0027t need to call gc.images.get if you just preserve the whole image entity from this call:\n\n  image \u003d utils.find_resource(gc.images, args.image)","commit_id":"37a8a884528321e22cc7df27c34e083209652b10"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea7b3e5bc2c8c9161dd8ca8481e11ceb2da6ea10","unresolved":false,"context_lines":[{"line_number":131,"context_line":"           help\u003d\u0027Print image size in a human-friendly format.\u0027)"},{"line_number":132,"context_line":"def do_image_show(gc, args):"},{"line_number":133,"context_line":"    \"\"\"Describe a specific image.\"\"\""},{"line_number":134,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":135,"context_line":"    image \u003d gc.images.get(image_id)"},{"line_number":136,"context_line":"    _image_show(image, args.human_readable)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F0bM%3D","line":134,"in_reply_to":"AAAAM3%2F%2F0tg%3D","updated":"2013-01-03 21:33:36.000000000","message":"if merging the above code, the result of \u0027glance image-show \u003cNAME\u003e\u0027 contains \u0027deleted_at\u0027. The result is different from \u0027glance image-show \u003cID\u003e\u0027 and original command(without the above code), they does not contain \u0027deleted_at\u0027. so I feel the original code is better.","commit_id":"37a8a884528321e22cc7df27c34e083209652b10"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"860e00d45920707b929892fec380653670ddcba8","unresolved":false,"context_lines":[{"line_number":144,"context_line":"def do_image_download(gc, args):"},{"line_number":145,"context_line":"    \"\"\"Download a specific image.\"\"\""},{"line_number":146,"context_line":"    image \u003d utils.find_resource(gc.images, args.image)"},{"line_number":147,"context_line":"    body \u003d gc.images.data(image)"},{"line_number":148,"context_line":"    utils.save_image(body, args.file)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F0Yo%3D","line":147,"updated":"2013-01-03 21:57:30.000000000","message":"Why can\u0027t you call \u0027body \u003d image.data()\u0027 ?","commit_id":"ae08cd245098a9451481e407f9dde0b159f87b35"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"39e11651328e64efe6c6c888261c1e3ee2fab4f2","unresolved":false,"context_lines":[{"line_number":144,"context_line":"def do_image_download(gc, args):"},{"line_number":145,"context_line":"    \"\"\"Download a specific image.\"\"\""},{"line_number":146,"context_line":"    image \u003d utils.find_resource(gc.images, args.image)"},{"line_number":147,"context_line":"    body \u003d gc.images.data(image)"},{"line_number":148,"context_line":"    utils.save_image(body, args.file)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FyyE%3D","line":147,"in_reply_to":"AAAAM3%2F%2F0Yo%3D","updated":"2013-01-04 21:10:36.000000000","message":"I see, I will merge the above code.","commit_id":"ae08cd245098a9451481e407f9dde0b159f87b35"}]}
