)]}'
{"nova/api/openstack/compute/contrib/hosts.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3c83166774c845f0f524103e5624090ac6e174cd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def __init__(self):"},{"line_number":123,"context_line":"        self.api \u003d compute.HostAPI()"},{"line_number":124,"context_line":"        self.update_setters \u003d {"},{"line_number":125,"context_line":"                \u0027status\u0027: self._set_enabled_status,"},{"line_number":126,"context_line":"                \u0027maintenance_mode\u0027: self._set_host_maintenance,"},{"line_number":127,"context_line":"            }"},{"line_number":128,"context_line":"        super(HostController, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F71s%3D","line":125,"updated":"2012-02-11 00:50:48.000000000","message":"PEP8 - indentation","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b830bc29f2a3b3bcb7bece95c22f6ac87808bbc6","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def __init__(self):"},{"line_number":123,"context_line":"        self.api \u003d compute.HostAPI()"},{"line_number":124,"context_line":"        self.update_setters \u003d {"},{"line_number":125,"context_line":"                \u0027status\u0027: self._set_enabled_status,"},{"line_number":126,"context_line":"                \u0027maintenance_mode\u0027: self._set_host_maintenance,"},{"line_number":127,"context_line":"            }"},{"line_number":128,"context_line":"        super(HostController, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F7jw%3D","line":125,"in_reply_to":"AAAAEn%2F%2F71s%3D","updated":"2012-02-13 11:49:32.000000000","message":"Done","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3c83166774c845f0f524103e5624090ac6e174cd","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # the result dictionaries are merged in the first one."},{"line_number":161,"context_line":"        # Note: the \u0027host\u0027 key will always be the same so it\u0027s"},{"line_number":162,"context_line":"        # okay that it gets overwritten."},{"line_number":163,"context_line":"        values \u003d update_values.keys()"},{"line_number":164,"context_line":"        r0 \u003d self.update_setters[values[0]](req, id,"},{"line_number":165,"context_line":"                                             update_values[values[0]])"},{"line_number":166,"context_line":"        for i in xrange(1, len(values)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F71g%3D","line":163,"updated":"2012-02-11 00:50:48.000000000","message":"Consider simplifying to the following:\n\nr0 \u003d {}\nfor key, value in update_values.iteritems():\n  r0.update(self.update_setters[key](req, id, value))\n\nAlso consider a more descriptive variable name - r0 is not self-explanatory.","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b830bc29f2a3b3bcb7bece95c22f6ac87808bbc6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # the result dictionaries are merged in the first one."},{"line_number":161,"context_line":"        # Note: the \u0027host\u0027 key will always be the same so it\u0027s"},{"line_number":162,"context_line":"        # okay that it gets overwritten."},{"line_number":163,"context_line":"        values \u003d update_values.keys()"},{"line_number":164,"context_line":"        r0 \u003d self.update_setters[values[0]](req, id,"},{"line_number":165,"context_line":"                                             update_values[values[0]])"},{"line_number":166,"context_line":"        for i in xrange(1, len(values)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F7js%3D","line":163,"in_reply_to":"AAAAEn%2F%2F71g%3D","updated":"2012-02-13 11:49:32.000000000","message":"Done","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ec528551a7a64ff729e1a875ee9d9d2c18891e9b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # okay that it gets overwritten."},{"line_number":161,"context_line":"        result \u003d {}"},{"line_number":162,"context_line":"        for key, value in update_values.iteritems():"},{"line_number":163,"context_line":"            result.update(self.update_setters[key](req, id, value))"},{"line_number":164,"context_line":"        return result"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _set_host_maintenance(self, req, host, mode\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAEn%2F%2F4NY%3D","line":163,"updated":"2012-02-21 22:23:33.000000000","message":"Can you pull the \u0027update_setters\u0027 into this method, as they really don\u0027t matter to the rest of the class? I would really like to see an arbitrary update method that we can call from here rather than calling specific api methods for each attribute, but I\u0027m not going to ask you to do that in this patch.","commit_id":"569a39b63e8cabc670a611bdc13abfff81869709"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f866c8f3b2029154b6fd866c151bf3fea90a7910","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # okay that it gets overwritten."},{"line_number":161,"context_line":"        result \u003d {}"},{"line_number":162,"context_line":"        for key, value in update_values.iteritems():"},{"line_number":163,"context_line":"            result.update(self.update_setters[key](req, id, value))"},{"line_number":164,"context_line":"        return result"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _set_host_maintenance(self, req, host, mode\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAEn%2F%2F4Mo%3D","line":163,"in_reply_to":"AAAAEn%2F%2F4NY%3D","updated":"2012-02-21 22:35:40.000000000","message":"I will make the update_setters a local variable of this method.\n\nAs for the other request, I agree with you, but I went for a change that minimized its impact on the overall code base. I am not overly excited of this way of updating host attributes, but this seemed the intention of the original author of this code. Clearly I might have got the wrong end of the stick ;)","commit_id":"569a39b63e8cabc670a611bdc13abfff81869709"}],"nova/compute/api.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3c83166774c845f0f524103e5624090ac6e174cd","unresolved":false,"context_lines":[{"line_number":1831,"context_line":"        host \u003d instance[\u0027host\u0027]"},{"line_number":1832,"context_line":"        if not host:"},{"line_number":1833,"context_line":"            raise exception.Error(_(\"Unable to find host for \""},{"line_number":1834,"context_line":"                    \"Instance %s\") % instance[\u0027uuid\u0027])"},{"line_number":1835,"context_line":"    queue \u003d db.queue_get_for(context, FLAGS.compute_topic, host)"},{"line_number":1836,"context_line":"    if instance:"},{"line_number":1837,"context_line":"        params[\u0027instance_uuid\u0027] \u003d instance[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F71w%3D","line":1834,"updated":"2012-02-11 00:50:48.000000000","message":"PEP8 vertical alignment","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b830bc29f2a3b3bcb7bece95c22f6ac87808bbc6","unresolved":false,"context_lines":[{"line_number":1831,"context_line":"        host \u003d instance[\u0027host\u0027]"},{"line_number":1832,"context_line":"        if not host:"},{"line_number":1833,"context_line":"            raise exception.Error(_(\"Unable to find host for \""},{"line_number":1834,"context_line":"                    \"Instance %s\") % instance[\u0027uuid\u0027])"},{"line_number":1835,"context_line":"    queue \u003d db.queue_get_for(context, FLAGS.compute_topic, host)"},{"line_number":1836,"context_line":"    if instance:"},{"line_number":1837,"context_line":"        params[\u0027instance_uuid\u0027] \u003d instance[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F7jo%3D","line":1834,"in_reply_to":"AAAAEn%2F%2F71w%3D","updated":"2012-02-13 11:49:32.000000000","message":"Done","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"df51830ef40adf4f03404f123da2dbdf8d154d64","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import novaclient"},{"line_number":28,"context_line":"import nova.image"},{"line_number":29,"context_line":"import nova.policy"},{"line_number":30,"context_line":"import webob.exc"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from nova import block_device"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5X0%3D","line":29,"updated":"2012-02-17 19:19:28.000000000","message":"These should be in with the other nova imports, for HACKING compliance","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"89fd347c6419fef33d167688f0269612f5f49b2d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import novaclient"},{"line_number":28,"context_line":"import nova.image"},{"line_number":29,"context_line":"import nova.policy"},{"line_number":30,"context_line":"import webob.exc"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from nova import block_device"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5XY%3D","line":29,"in_reply_to":"AAAAEn%2F%2F5X0%3D","updated":"2012-02-17 19:22:07.000000000","message":"Done","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"}],"nova/tests/api/openstack/compute/contrib/test_hosts.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3c83166774c845f0f524103e5624090ac6e174cd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (enable ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F72A%3D","line":59,"updated":"2012-02-11 00:50:48.000000000","message":"Why is a bitwise XOR (^) operator being used to test against a boolean?  A boolean OR would suffice.","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b830bc29f2a3b3bcb7bece95c22f6ac87808bbc6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (enable ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F7jk%3D","line":59,"in_reply_to":"AAAAEn%2F%2F72A%3D","updated":"2012-02-13 11:49:32.000000000","message":"I haven\u0027t actually wrote the code myself, I humbly copied it from stub_set_host_enabled; however, to follow the author\u0027s logic, an OR wouldn\u0027t work, because you basically wanna return the opposite of \u0027enable\u0027 when host\u003d\u003dhost_c2:\n\nXOR case:\n\nenable         fail (i.e. host\u003d\u003dhost_c2)            maintenance\nTrue                   True                                off_maintenance\nTrue                   False                              on_maintenance \nFalse                  True                               on_maintenance \nFalse                  False                             off_maintenance\n\n\nOR case:\n\nenable         fail (i.e. host\u003d\u003dhost_c2)            maintenance\nTrue                   True                               on_maintenance ***\nTrue                   False                              on_maintenance \nFalse                  True                               on_maintenance \nFalse                  False                              off_maintenance\n\nThis issue aside, this made me notice that \u0027enable\u0027 in the if condition isn\u0027t the most appropriate variable name. I could refactor the method into a util one too, but I don\u0027t think it\u0027s worth it.","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d9e6b805ab84b142a8123c0d1a8ca115877dd1f6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (enable ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F7jU%3D","line":59,"in_reply_to":"AAAAEn%2F%2F7jk%3D","updated":"2012-02-13 11:50:39.000000000","message":"darn, gerrit didn\u0027t keep the indentation!","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3c83166774c845f0f524103e5624090ac6e174cd","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.stubs.Set(self.controller.api, \u0027set_host_enabled\u0027,"},{"line_number":109,"context_line":"                stub_set_host_enabled)"},{"line_number":110,"context_line":"        self.stubs.Set(self.controller.api, \u0027set_host_maintenance\u0027,"},{"line_number":111,"context_line":"                stub_set_host_maintenance)"},{"line_number":112,"context_line":"        self.stubs.Set(self.controller.api, \u0027host_power_action\u0027,"},{"line_number":113,"context_line":"                stub_host_power_action)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F714%3D","line":111,"updated":"2012-02-11 00:50:48.000000000","message":"PEP8 vertical alignment","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b830bc29f2a3b3bcb7bece95c22f6ac87808bbc6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.stubs.Set(self.controller.api, \u0027set_host_enabled\u0027,"},{"line_number":109,"context_line":"                stub_set_host_enabled)"},{"line_number":110,"context_line":"        self.stubs.Set(self.controller.api, \u0027set_host_maintenance\u0027,"},{"line_number":111,"context_line":"                stub_set_host_maintenance)"},{"line_number":112,"context_line":"        self.stubs.Set(self.controller.api, \u0027host_power_action\u0027,"},{"line_number":113,"context_line":"                stub_host_power_action)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F7jg%3D","line":111,"in_reply_to":"AAAAEn%2F%2F714%3D","updated":"2012-02-13 11:49:32.000000000","message":"Done","commit_id":"157c0f2f6a0a202341c3540c461ad102bff70adc"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f194556c46a2b19cfeee911295a856f572a2fda9","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (mode ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F7XI%3D","line":59,"updated":"2012-02-13 22:16:53.000000000","message":"Consider changing (mode ^ fail) to (mode !\u003d fail) - they are logically equivalent and !\u003d is much more accessible than ^.  ^ comes from C/C++, where it has no logical (^^) equivalent, and very few Python programmers would know what it does.","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"89fd347c6419fef33d167688f0269612f5f49b2d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (mode ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5Xg%3D","line":59,"in_reply_to":"AAAAEn%2F%2F5Xw%3D","updated":"2012-02-17 19:22:07.000000000","message":"Done","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"df51830ef40adf4f03404f123da2dbdf8d154d64","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (mode ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F5Xw%3D","line":59,"in_reply_to":"AAAAEn%2F%2F6u0%3D","updated":"2012-02-17 19:19:28.000000000","message":"I have to agree with maru here; use the simpler to understand construct, even if it ends up being more verbose.","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"89786f4e280aeafddc0cd7ec41fd99e0ef53f05f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (mode ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F6u0%3D","line":59,"in_reply_to":"AAAAEn%2F%2F7B4%3D","updated":"2012-02-14 22:01:27.000000000","message":"That\u0027s one way to look at it, but when it comes to code maintenance anything that detracts from readability is arguably a bad idea.  In personal projects, sure, but a widely-used open source project?","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82c04bbf750a6683b78dd3bd05768ea2ee417bf2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (mode ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAEn%2F%2F7B4%3D","line":59,"in_reply_to":"AAAAEn%2F%2F7XI%3D","updated":"2012-02-14 12:38:55.000000000","message":"I can see your point, however, isn\u0027t something unfamiliar an opportunity for one to learn something new?","commit_id":"20c4d6b2960d62cb465cff5ba78d2806851e90a1"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"65feb58a6b15a6b2e94de245b328e97f9d467d42","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    # that \u0027host_c1\u0027 always succeeds, and \u0027host_c2\u0027"},{"line_number":57,"context_line":"    # always fails"},{"line_number":58,"context_line":"    fail \u003d (host \u003d\u003d \"host_c2\")"},{"line_number":59,"context_line":"    maintenance \u003d \"on_maintenance\" if (mode ^ fail) else \"off_maintenance\""},{"line_number":60,"context_line":"    return maintenance"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F5QY%3D","line":59,"updated":"2012-02-17 20:25:30.000000000","message":"\"Done\"?","commit_id":"03a3ec747041a6ee9ca09913fb45e43d9d8d5be4"}]}
