)]}'
{"novaclient/v1_1/shell.py":[{"author":{"_account_id":4303,"name":"Tim Daly, Jr.","email":"timjr@yahoo-inc.com","username":"timjr"},"change_message_id":"a07b996983989c7892c670b661a9381bb12c4883","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    image_list \u003d cs.images.list()"},{"line_number":34,"context_line":"    meta_match \u003d dict(v.split(\u0027\u003d\u0027, 1) for v in wanted_properties)"},{"line_number":35,"context_line":"    images_matched \u003d []"},{"line_number":36,"context_line":"    for img in image_list:"},{"line_number":37,"context_line":"        match_amount \u003d 0"},{"line_number":38,"context_line":"        for (k, v) in meta_match.items():"},{"line_number":39,"context_line":"            if k in img.metadata and img.metadata[k] \u003d\u003d v:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FlM0%3D","line":36,"updated":"2013-01-15 02:51:50.000000000","message":"I think this function reads a little better if you do it with sets (untested):\n\ndef _match_image(cs, wanted_properties):\n    image_list \u003d cs.images.list()\n    meta_match \u003d set(tuple(v.split(\u0027\u003d\u0027, 1) for v in wanted_properties)\n    images_matched \u003d []\n    for img in image_list:\n        if meta_match \u003d\u003d meta_match \u0026 set(img.metadata.iteritems()):\n            images_matched.append(img)\n    return images_matched","commit_id":"6a2432378b0a703533f97b7057dd71b9879e08a2"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a028eafef87484ae83dda4db14bf772f9bb00e9e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    image_list \u003d cs.images.list()"},{"line_number":34,"context_line":"    meta_match \u003d dict(v.split(\u0027\u003d\u0027, 1) for v in wanted_properties)"},{"line_number":35,"context_line":"    images_matched \u003d []"},{"line_number":36,"context_line":"    for img in image_list:"},{"line_number":37,"context_line":"        match_amount \u003d 0"},{"line_number":38,"context_line":"        for (k, v) in meta_match.items():"},{"line_number":39,"context_line":"            if k in img.metadata and img.metadata[k] \u003d\u003d v:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fh%2BU%3D","line":36,"in_reply_to":"AAAAM3%2F%2FlM0%3D","updated":"2013-01-17 01:58:48.000000000","message":"Eck, reads better. idk.","commit_id":"6a2432378b0a703533f97b7057dd71b9879e08a2"},{"author":{"_account_id":4303,"name":"Tim Daly, Jr.","email":"timjr@yahoo-inc.com","username":"timjr"},"change_message_id":"3785b39b982c6aa3adf9275ad71bba707285d0b1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        raise argparse.ArgumentTypeError(msg)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _match_image(cs, wanted_properties):"},{"line_number":42,"context_line":"    image_list \u003d cs.images.list()"},{"line_number":43,"context_line":"    images_matched \u003d []"},{"line_number":44,"context_line":"    meta_match \u003d set(wanted_properties)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fgx8%3D","line":41,"updated":"2013-01-17 20:35:22.000000000","message":"better if this is _match_images cuz it returns a list","commit_id":"230127fa87bfb208111ed975740575e60f5f5319"},{"author":{"_account_id":4303,"name":"Tim Daly, Jr.","email":"timjr@yahoo-inc.com","username":"timjr"},"change_message_id":"3785b39b982c6aa3adf9275ad71bba707285d0b1","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        raise exceptions.CommandError(\"you need to specify an Image ID \""},{"line_number":76,"context_line":"                                      \"or a block device mapping \""},{"line_number":77,"context_line":"                                      \"or provide a set of properties to match\""},{"line_number":78,"context_line":"                                      \" against an image!\")"},{"line_number":79,"context_line":"    if not args.flavor:"},{"line_number":80,"context_line":"        raise exceptions.CommandError(\"you need to specify a Flavor ID \")"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FgyA%3D","line":78,"updated":"2013-01-17 20:35:22.000000000","message":"I know we\u0027re y! and all, but dunno if that bang is appropriate.","commit_id":"230127fa87bfb208111ed975740575e60f5f5319"}],"tests/test_shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"217252cb1da93b7a5acd6ef0856385a3158343ec","unresolved":false,"context_lines":[{"line_number":8,"context_line":"from tests import utils"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"import mock"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"class ShellTest(utils.TestCase):"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Fgno%3D","line":11,"updated":"2013-01-17 22:29:02.000000000","message":"Did you accidentally modify this file before discovering tests/v1_1/test_shell.py?","commit_id":"cd717efefb8437d42f6393c8f92f5106a715bd72"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"f89eceea0a285e5e2d52ccbecb2518e08d9961ff","unresolved":false,"context_lines":[{"line_number":8,"context_line":"from tests import utils"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"import mock"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"class ShellTest(utils.TestCase):"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FgmU%3D","line":11,"in_reply_to":"AAAAM3%2F%2Fgno%3D","updated":"2013-01-17 22:46:52.000000000","message":"Correct, thanks, thought i cleaned it, haha.","commit_id":"cd717efefb8437d42f6393c8f92f5106a715bd72"}],"tests/v1_1/test_shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"34bfb8f630268a42633866f5b5266d06bebdf69a","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_boot_image_with(self):"},{"line_number":121,"context_line":"        self.run_command((\"boot --flavor 1\""},{"line_number":122,"context_line":"                          \" --image-with test_key\u003dtest_value some-server\"))"},{"line_number":123,"context_line":"        self.assert_called_anytime("},{"line_number":124,"context_line":"            \u0027POST\u0027, \u0027/servers\u0027,"},{"line_number":125,"context_line":"            {\u0027server\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fgk4%3D","line":122,"updated":"2013-01-17 23:01:04.000000000","message":"Um…why the extra pair of parentheses here?","commit_id":"c85f3c70168f36039cd56eef95e03575e45dfa7a"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"834de7e7f6dfadcacc48c11fc4ec9208c33aa05b","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_boot_image_with(self):"},{"line_number":121,"context_line":"        self.run_command((\"boot --flavor 1\""},{"line_number":122,"context_line":"                          \" --image-with test_key\u003dtest_value some-server\"))"},{"line_number":123,"context_line":"        self.assert_called_anytime("},{"line_number":124,"context_line":"            \u0027POST\u0027, \u0027/servers\u0027,"},{"line_number":125,"context_line":"            {\u0027server\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fge8%3D","line":122,"in_reply_to":"AAAAM3%2F%2FggY%3D","updated":"2013-01-18 00:02:36.000000000","message":"Heh :)","commit_id":"c85f3c70168f36039cd56eef95e03575e45dfa7a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a858085c7cf74ae92bcb8ccaf66cae196a5c2532","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_boot_image_with(self):"},{"line_number":121,"context_line":"        self.run_command((\"boot --flavor 1\""},{"line_number":122,"context_line":"                          \" --image-with test_key\u003dtest_value some-server\"))"},{"line_number":123,"context_line":"        self.assert_called_anytime("},{"line_number":124,"context_line":"            \u0027POST\u0027, \u0027/servers\u0027,"},{"line_number":125,"context_line":"            {\u0027server\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FggY%3D","line":122,"in_reply_to":"AAAAM3%2F%2Fgk4%3D","updated":"2013-01-17 23:50:17.000000000","message":"In case we lose a pair, backups are always in order. Actually always forget its not needed :-P","commit_id":"c85f3c70168f36039cd56eef95e03575e45dfa7a"}]}
