)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7d97e8b9597a68d5bc0c68b0d892f3735090b8c7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix misplaced check for None in SwiftUploadObject."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Check for None was being done being a method call."},{"line_number":10,"context_line":"The Method call was also a mistake and has been corrected to the"},{"line_number":11,"context_line":"hasattr function like intended."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a890539_58025e0c","line":9,"updated":"2014-11-19 10:47:57.000000000","message":"? typo: being done being","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":13470,"name":"Daniel Wakefield","email":"dan@danw.eu","username":"danw"},"change_message_id":"4436168bc49e9b0e3ba4c65f7015daff697160ad","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix misplaced check for None in SwiftUploadObject."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Check for None was being done being a method call."},{"line_number":10,"context_line":"The Method call was also a mistake and has been corrected to the"},{"line_number":11,"context_line":"hasattr function like intended."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a890539_25f802e5","line":9,"in_reply_to":"5a890539_58025e0c","updated":"2014-11-19 14:09:41.000000000","message":"yeah, should be \"being done after\"","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"}],"swiftclient/service.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"dbf0e150c64d4fcdced57f427a6a9e5a268deb37","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    options to be specified separately for each individual object."},{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":"    def __init__(self, source, object_name\u003dNone, options\u003dNone):"},{"line_number":260,"context_line":"        is_string \u003d lambda x: isinstance(x, string_types)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        if is_string(source):"},{"line_number":263,"context_line":"            self.object_name \u003d object_name or source"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_c90b47d3","line":260,"updated":"2014-12-03 15:58:03.000000000","message":"Just a small nitpick - I think using \n\n if isinstance(source, string_types):\n\nbelow is just fine, there is no need for a lambda function here?","commit_id":"d71d47bfe8eeb7cc39a0144ab101ef98a050aadc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8fd9d4f30bb10f5b95aa340aeaf189e54cf45ce1","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    options to be specified separately for each individual object."},{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":"    def __init__(self, source, object_name\u003dNone, options\u003dNone):"},{"line_number":260,"context_line":"        is_string \u003d lambda x: isinstance(x, string_types)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        if is_string(source):"},{"line_number":263,"context_line":"            self.object_name \u003d object_name or source"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_184622c0","line":260,"in_reply_to":"5a890539_18a03a8f","updated":"2014-12-08 05:09:11.000000000","message":"I prefer no lambda function too, but to me it\u0027s also a nitpick.\n\nBut nothing the worry about unless your going to upload another patchset.","commit_id":"d71d47bfe8eeb7cc39a0144ab101ef98a050aadc"},{"author":{"_account_id":13470,"name":"Daniel Wakefield","email":"dan@danw.eu","username":"danw"},"change_message_id":"7e56e96c828c86eb1580b0539dd44c2303696dd5","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    options to be specified separately for each individual object."},{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":"    def __init__(self, source, object_name\u003dNone, options\u003dNone):"},{"line_number":260,"context_line":"        is_string \u003d lambda x: isinstance(x, string_types)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        if is_string(source):"},{"line_number":263,"context_line":"            self.object_name \u003d object_name or source"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_18a03a8f","line":260,"in_reply_to":"5a890539_c90b47d3","updated":"2014-12-03 16:27:11.000000000","message":"It was originally used to get around PEP8 line length but changing line 266 from\n    if object_name is None \n    # To\n    if not object_name\nsaved enough characters to make it unneeded.\nI dont have a preference either way about keeping it though, whatever you feel fits the openstack style the most is fine.","commit_id":"d71d47bfe8eeb7cc39a0144ab101ef98a050aadc"}],"tests/unit/test_service.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7d97e8b9597a68d5bc0c68b0d892f3735090b8c7","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertTrue(\u0027os_options\u0027 in opt_c)"},{"line_number":174,"context_line":"        del opt_c[\u0027os_options\u0027]"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        self.assertEqual(opt_c[\u0027auth_version\u0027], \u00272.0\u0027)"},{"line_number":177,"context_line":"        opt_c[\u0027auth_version\u0027] \u003d \u00271.0\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        self.assertEqual(opt_c, self.opts)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_582b3e94","line":176,"updated":"2014-11-19 10:47:57.000000000","message":"this fails if env has ST_AUTH, ST_KEY and ST_AUTH set when tests are run.\n\nTake a look at the pattern to mock the os.environ in test_Shell.TestParsing or (better perhaps) in this review https://review.openstack.org/#/c/130711/8/tests/unit/test_shell.py","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":13470,"name":"Daniel Wakefield","email":"dan@danw.eu","username":"danw"},"change_message_id":"4436168bc49e9b0e3ba4c65f7015daff697160ad","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertTrue(\u0027os_options\u0027 in opt_c)"},{"line_number":174,"context_line":"        del opt_c[\u0027os_options\u0027]"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        self.assertEqual(opt_c[\u0027auth_version\u0027], \u00272.0\u0027)"},{"line_number":177,"context_line":"        opt_c[\u0027auth_version\u0027] \u003d \u00271.0\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        self.assertEqual(opt_c, self.opts)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_25aac2d4","line":176,"in_reply_to":"5a890539_582b3e94","updated":"2014-11-19 14:09:41.000000000","message":"Didnt think of that. Ive based the fix on the patch still in review. The TestParsing code will need to be updated as well since it doesnt work, Running it against py3 tests causes runtime errors if any ENV_VARS are set. since in py3 the dict.keys() method was changed from returning a list to returning a generator.","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7d97e8b9597a68d5bc0c68b0d892f3735090b8c7","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        suo \u003d self.suo(\u0027source\u0027, \u0027obj_name\u0027)"},{"line_number":266,"context_line":"        self.assertEqual(suo.source, \u0027source\u0027)"},{"line_number":267,"context_line":"        self.assertEqual(suo.object_name, \u0027obj_name\u0027)"},{"line_number":268,"context_line":"        self.assertEqual(suo.options, None)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def test_create_with_file(self):"},{"line_number":271,"context_line":"        with tempfile.TemporaryFile() as mock_file:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_78a0faa5","line":268,"updated":"2014-11-19 10:47:57.000000000","message":"add test for non-None options being set","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":13470,"name":"Daniel Wakefield","email":"dan@danw.eu","username":"danw"},"change_message_id":"4436168bc49e9b0e3ba4c65f7015daff697160ad","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        suo \u003d self.suo(\u0027source\u0027, \u0027obj_name\u0027)"},{"line_number":266,"context_line":"        self.assertEqual(suo.source, \u0027source\u0027)"},{"line_number":267,"context_line":"        self.assertEqual(suo.object_name, \u0027obj_name\u0027)"},{"line_number":268,"context_line":"        self.assertEqual(suo.options, None)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def test_create_with_file(self):"},{"line_number":271,"context_line":"        with tempfile.TemporaryFile() as mock_file:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_65d92a83","line":268,"in_reply_to":"5a890539_78a0faa5","updated":"2014-11-19 14:09:41.000000000","message":"Done","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7d97e8b9597a68d5bc0c68b0d892f3735090b8c7","unresolved":false,"context_lines":[{"line_number":279,"context_line":"            suo \u003d self.suo(mock_file, \u0027obj_name\u0027)"},{"line_number":280,"context_line":"            self.assertEqual(suo.source, mock_file)"},{"line_number":281,"context_line":"            self.assertEqual(suo.object_name, \u0027obj_name\u0027)"},{"line_number":282,"context_line":"            self.assertEqual(suo.options, None)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_create_with_no_source(self):"},{"line_number":285,"context_line":"        suo \u003d self.suo(None, \u0027obj_name\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_98a5a6b7","line":282,"updated":"2014-11-19 10:47:57.000000000","message":"add test for non-None options being set","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":13470,"name":"Daniel Wakefield","email":"dan@danw.eu","username":"danw"},"change_message_id":"4436168bc49e9b0e3ba4c65f7015daff697160ad","unresolved":false,"context_lines":[{"line_number":279,"context_line":"            suo \u003d self.suo(mock_file, \u0027obj_name\u0027)"},{"line_number":280,"context_line":"            self.assertEqual(suo.source, mock_file)"},{"line_number":281,"context_line":"            self.assertEqual(suo.object_name, \u0027obj_name\u0027)"},{"line_number":282,"context_line":"            self.assertEqual(suo.options, None)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_create_with_no_source(self):"},{"line_number":285,"context_line":"        suo \u003d self.suo(None, \u0027obj_name\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_85e61643","line":282,"in_reply_to":"5a890539_98a5a6b7","updated":"2014-11-19 14:09:41.000000000","message":"Done","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7d97e8b9597a68d5bc0c68b0d892f3735090b8c7","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        suo \u003d self.suo(None, \u0027obj_name\u0027)"},{"line_number":286,"context_line":"        self.assertEqual(suo.source, None)"},{"line_number":287,"context_line":"        self.assertEqual(suo.object_name, \u0027obj_name\u0027)"},{"line_number":288,"context_line":"        self.assertEqual(suo.options, None)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_create_with_invalid_source(self):"},{"line_number":291,"context_line":"        self.assertRaises(SwiftError, self.suo, [])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_f87a2a24","line":288,"updated":"2014-11-19 10:47:57.000000000","message":"add test that obj name is required","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"},{"author":{"_account_id":13470,"name":"Daniel Wakefield","email":"dan@danw.eu","username":"danw"},"change_message_id":"4436168bc49e9b0e3ba4c65f7015daff697160ad","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        suo \u003d self.suo(None, \u0027obj_name\u0027)"},{"line_number":286,"context_line":"        self.assertEqual(suo.source, None)"},{"line_number":287,"context_line":"        self.assertEqual(suo.object_name, \u0027obj_name\u0027)"},{"line_number":288,"context_line":"        self.assertEqual(suo.options, None)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_create_with_invalid_source(self):"},{"line_number":291,"context_line":"        self.assertRaises(SwiftError, self.suo, [])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_c5cf3eb2","line":288,"in_reply_to":"5a890539_f87a2a24","updated":"2014-11-19 14:09:41.000000000","message":"Done","commit_id":"c1fb4fe03344e055a232e799828fd197c2ac36a3"}]}
