)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6122e62edcdf6d8efd5cf20e03580ccb0c7d73e2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-10-08 21:12:39 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a user friendly message when --segment-size is a non-integer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic2c062110b2fe2e725b0f4a4517a300cfbf663a8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baa201ad_8f058a12","line":8,"updated":"2014-10-08 17:43:50.000000000","message":"Add this line to cross-reference your bug (assuming this is the right bug):\n\nCloses-Bug: #1244506","commit_id":"bf77c5b8e1a4aea44c4410431c593c5a91ef4a9a"}],"swiftclient/service.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"06580019fa6894f6be5b3edcaa410e85c606e051","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"            # to create objects from memory"},{"line_number":1584,"context_line":"            try:"},{"line_number":1585,"context_line":"                segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1586,"context_line":"                                   options[\u0027segment_size\u0027])"},{"line_number":1587,"context_line":"            except ValueError:"},{"line_number":1588,"context_line":"                raise Exception(\u0027Segment size should be an integer value\u0027)"},{"line_number":1589,"context_line":"            if path is not None and options[\u0027segment_size\u0027] and \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_04c36d89","line":1586,"updated":"2014-10-07 10:35:38.000000000","message":"You could simplify this:\n\n segment_size \u003d int(options.get(\u0027segment_size\u0027, 0))","commit_id":"06c9aa4ca98356b14df11e0f5c24831633b24d1f"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"93cd160cbe422fbe718242f5032b507b2787d722","unresolved":false,"context_lines":[{"line_number":1586,"context_line":"                                   options[\u0027segment_size\u0027])"},{"line_number":1587,"context_line":"            except ValueError:"},{"line_number":1588,"context_line":"                raise Exception(\u0027Segment size should be an integer value\u0027)"},{"line_number":1589,"context_line":"            if path is not None and options[\u0027segment_size\u0027] and \\"},{"line_number":1590,"context_line":"                    getsize(path) \u003e segment_size:"},{"line_number":1591,"context_line":"                res[\u0027large_object\u0027] \u003d True"},{"line_number":1592,"context_line":"                seg_container \u003d container + \u0027_segments\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_f39686ef","line":1589,"updated":"2014-10-02 13:57:55.000000000","message":"I realize I can replace options[\u0027segment_size\u0027] with segment_size.","commit_id":"06c9aa4ca98356b14df11e0f5c24831633b24d1f"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"06580019fa6894f6be5b3edcaa410e85c606e051","unresolved":false,"context_lines":[{"line_number":1586,"context_line":"                                   options[\u0027segment_size\u0027])"},{"line_number":1587,"context_line":"            except ValueError:"},{"line_number":1588,"context_line":"                raise Exception(\u0027Segment size should be an integer value\u0027)"},{"line_number":1589,"context_line":"            if path is not None and options[\u0027segment_size\u0027] and \\"},{"line_number":1590,"context_line":"                    getsize(path) \u003e segment_size:"},{"line_number":1591,"context_line":"                res[\u0027large_object\u0027] \u003d True"},{"line_number":1592,"context_line":"                seg_container \u003d container + \u0027_segments\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_24bcf105","line":1589,"in_reply_to":"baa201ad_f39686ef","updated":"2014-10-07 10:35:38.000000000","message":"Yes, that would be better I think","commit_id":"06c9aa4ca98356b14df11e0f5c24831633b24d1f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b74b05d38df8ed2eb7c48ddb8f5fe0d7d5357b41","unresolved":false,"context_lines":[{"line_number":1581,"context_line":"            # a segment job if we\u0027re reading from a stream - we may fail if we"},{"line_number":1582,"context_line":"            # go over the single object limit, but this gives us a nice way"},{"line_number":1583,"context_line":"            # to create objects from memory"},{"line_number":1584,"context_line":"            try:"},{"line_number":1585,"context_line":"                segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1586,"context_line":"                                   options[\u0027segment_size\u0027])"},{"line_number":1587,"context_line":"            except ValueError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_34beb1ae","line":1584,"updated":"2014-10-08 17:41:55.000000000","message":"I think the check could be done earlier at line 1180, before the container PUTs are attempted.","commit_id":"bf77c5b8e1a4aea44c4410431c593c5a91ef4a9a"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"ed5ea2d9095ff6808592a4d26e9e95638d4c7a57","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"            # to create objects from memory"},{"line_number":1584,"context_line":"            try:"},{"line_number":1585,"context_line":"                segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1586,"context_line":"                                   options[\u0027segment_size\u0027])"},{"line_number":1587,"context_line":"            except ValueError:"},{"line_number":1588,"context_line":"                raise Exception(\u0027Segment size should be an integer value\u0027)"},{"line_number":1589,"context_line":"            if path is not None and options[\u0027segment_size\u0027] and \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_6f98661c","line":1586,"updated":"2014-10-08 18:18:33.000000000","message":"I\u0027m still a big fan of\n\n  segment_size \u003d int(options.get(\u0027segment_size\u0027, 0))\n\nBut that\u0027s just a small nitpick ;)","commit_id":"bf77c5b8e1a4aea44c4410431c593c5a91ef4a9a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b74b05d38df8ed2eb7c48ddb8f5fe0d7d5357b41","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"                segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1586,"context_line":"                                   options[\u0027segment_size\u0027])"},{"line_number":1587,"context_line":"            except ValueError:"},{"line_number":1588,"context_line":"                raise Exception(\u0027Segment size should be an integer value\u0027)"},{"line_number":1589,"context_line":"            if path is not None and options[\u0027segment_size\u0027] and \\"},{"line_number":1590,"context_line":"                    getsize(path) \u003e segment_size:"},{"line_number":1591,"context_line":"                res[\u0027large_object\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_f4234902","line":1588,"updated":"2014-10-08 17:41:55.000000000","message":"assuming you move the check to line 1201, then raise SwiftError rather than Exception","commit_id":"bf77c5b8e1a4aea44c4410431c593c5a91ef4a9a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7b27e7406e8b1f64cae747ebff2d12f19911148d","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"            )"},{"line_number":1198,"context_line":"        ]"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        try:"},{"line_number":1201,"context_line":"            segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1202,"context_line":"                               options[\u0027segment_size\u0027])"},{"line_number":1203,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_c1c75743","line":1200,"updated":"2014-10-09 07:51:36.000000000","message":"I suggest moving this check earlier still (line 1179) - at line 1181 an account HEAD request is made and at line 1196 a container PUT is made, both of which are unnecessary if this check then fails.","commit_id":"9a55fd0e9bf7a0db87722d4b9e346a701665d6b9"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dc539c6abbccc3817df1fe1ad71c0b9609dd540","unresolved":false,"context_lines":[{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        try:"},{"line_number":1201,"context_line":"            segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1202,"context_line":"                               options[\u0027segment_size\u0027])"},{"line_number":1203,"context_line":"        except ValueError:"},{"line_number":1204,"context_line":"            raise SwiftError(\u0027Segment size should be an integer value\u0027)"},{"line_number":1205,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_a6dfc967","line":1202,"updated":"2014-10-09 06:25:03.000000000","message":"If you change something, you could replace this too with:\n\n  segment_size \u003d int(options.get(\u0027segment_size\u0027, 0))","commit_id":"9a55fd0e9bf7a0db87722d4b9e346a701665d6b9"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"6e683c0958826d27ebe0014d96e164eac1ccd847","unresolved":false,"context_lines":[{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        try:"},{"line_number":1201,"context_line":"            segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1202,"context_line":"                               options[\u0027segment_size\u0027])"},{"line_number":1203,"context_line":"        except ValueError:"},{"line_number":1204,"context_line":"            raise SwiftError(\u0027Segment size should be an integer value\u0027)"},{"line_number":1205,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_5a66f751","line":1202,"updated":"2014-10-08 23:32:07.000000000","message":"this assignment to segment_size will result in an integer value, always","commit_id":"9a55fd0e9bf7a0db87722d4b9e346a701665d6b9"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"1871a4586ec406df8ad4d9af58a146bf64569bde","unresolved":false,"context_lines":[{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        try:"},{"line_number":1201,"context_line":"            segment_size \u003d int(0 if options[\u0027segment_size\u0027] is None else"},{"line_number":1202,"context_line":"                               options[\u0027segment_size\u0027])"},{"line_number":1203,"context_line":"        except ValueError:"},{"line_number":1204,"context_line":"            raise SwiftError(\u0027Segment size should be an integer value\u0027)"},{"line_number":1205,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_d6747438","line":1202,"in_reply_to":"baa201ad_a6dfc967","updated":"2014-10-09 12:11:16.000000000","message":"OK, this makes only sense if the default is changed to  0 (in shell.py). Nevermind, this line is fine with me","commit_id":"9a55fd0e9bf7a0db87722d4b9e346a701665d6b9"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"6e683c0958826d27ebe0014d96e164eac1ccd847","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        except ValueError:"},{"line_number":1204,"context_line":"            raise SwiftError(\u0027Segment size should be an integer value\u0027)"},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"        if segment_size is not None:"},{"line_number":1207,"context_line":"            seg_container \u003d container + \u0027_segments\u0027"},{"line_number":1208,"context_line":"            if options[\u0027segment_container\u0027]:"},{"line_number":1209,"context_line":"                seg_container \u003d options[\u0027segment_container\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_dad827f1","line":1206,"updated":"2014-10-08 23:32:07.000000000","message":"because the assignment above will always be an integer, this comparison will always evaluate to true. Python\u0027s \"is\" comparator ensures that the two things being compared are exactly the same object in memory.\n\nChanging this to:\n\n    if segment_size:\n\nshould fix it.","commit_id":"9a55fd0e9bf7a0db87722d4b9e346a701665d6b9"}],"tests/unit/test_service.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"429d873cf40ee059f57128516c817356a4f9bd02","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class TestService(testtools.TestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_upload_with_bad_segment_size(self):"},{"line_number":24,"context_line":"        for bad in (\u0027ten\u0027):"},{"line_number":25,"context_line":"            options \u003d {\u0027segment_size\u0027: bad}"},{"line_number":26,"context_line":"            try:"},{"line_number":27,"context_line":"                service \u003d SwiftService(options)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_8e43c56a","line":24,"updated":"2014-10-28 15:52:53.000000000","message":"this loops through \u0027t\u0027 \u0027e\u0027 \u0027n\u0027 ((\u0027ten\u0027) is not a tuple) - it would perhaps be better to make it (\u0027ten\u0027, \u00271M\u0027, 100.3) or similar (I think they all trigger a SwiftError?)","commit_id":"225d839fd874426f0f463d8e512819f7725d5bdb"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"cc2a1e2d9037aed99398f5a4e7231111344a979e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class TestService(testtools.TestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_upload_with_bad_segment_size(self):"},{"line_number":24,"context_line":"        for bad in (\u0027ten\u0027):"},{"line_number":25,"context_line":"            options \u003d {\u0027segment_size\u0027: bad}"},{"line_number":26,"context_line":"            try:"},{"line_number":27,"context_line":"                service \u003d SwiftService(options)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_ae3de9de","line":24,"in_reply_to":"9aa7fdbe_8e43c56a","updated":"2014-10-28 15:54:53.000000000","message":"1M does not trigger an error - because the previous patch (adding suffixes) translates this in shell.py","commit_id":"225d839fd874426f0f463d8e512819f7725d5bdb"}],"tests/unit/test_shell.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b74b05d38df8ed2eb7c48ddb8f5fe0d7d5357b41","unresolved":false,"context_lines":[{"line_number":411,"context_line":"    @mock.patch(\u0027swiftclient.shell.OutputManager._print\u0027)"},{"line_number":412,"context_line":"    def test_upload_segmentsize_error(self, mock_print):"},{"line_number":413,"context_line":"        argv \u003d [\"\", \"upload\", \"container\", self.tmpfile, \"-S\", \"ten\"]"},{"line_number":414,"context_line":"        with self.assertRaises(SystemExit):"},{"line_number":415,"context_line":"            swiftclient.shell.main(argv)"},{"line_number":416,"context_line":"        mock_print.assert_has_call("},{"line_number":417,"context_line":"            mock.call(\u0027Segment size should be an integer value\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_b49b8164","line":414,"updated":"2014-10-08 17:41:55.000000000","message":"I think that using self.assertRaises as a context manager is only supported for python2.7 on, which is why the test fails the py26 gate job","commit_id":"bf77c5b8e1a4aea44c4410431c593c5a91ef4a9a"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"ed5ea2d9095ff6808592a4d26e9e95638d4c7a57","unresolved":false,"context_lines":[{"line_number":412,"context_line":"    def test_upload_segmentsize_error(self, mock_print):"},{"line_number":413,"context_line":"        argv \u003d [\"\", \"upload\", \"container\", self.tmpfile, \"-S\", \"ten\"]"},{"line_number":414,"context_line":"        with self.assertRaises(SystemExit):"},{"line_number":415,"context_line":"            swiftclient.shell.main(argv)"},{"line_number":416,"context_line":"        mock_print.assert_has_call("},{"line_number":417,"context_line":"            mock.call(\u0027Segment size should be an integer value\u0027))"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_8fcd8a33","line":415,"updated":"2014-10-08 18:18:33.000000000","message":"Yep, Alistair is right; unfortunately it was my suggestion. So the correct call would be (instead of the with... in line 414/415):\n\n self.assertRaises(SystemExit, swiftclient.shell.main, argv)","commit_id":"bf77c5b8e1a4aea44c4410431c593c5a91ef4a9a"}]}
