)]}'
{"doc/source/api/large_objects.rst":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"1b20359590316f2a70e44a626484eb6cb74f664c","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"-  ``range`` (optional). The subset of the referenced object that should"},{"line_number":73,"context_line":"   be used for segment data. This behaves similar to the ``Range`` header."},{"line_number":74,"context_line":"   If omitted, the entire object will be used."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Providing the optional ``etag`` and ``size_bytes`` attributes for each"},{"line_number":77,"context_line":"segment ensures that the upload cannot corrupt your data."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_9ebfc1fa","line":74,"updated":"2016-12-13 18:59:02.000000000","message":"good to have range on this now too :-)","commit_id":"7fb102dc5d4a6cabed8c18279e9be5829be846b1"}],"swift/common/middleware/slo.py":[{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"77f14945fdbf4606ec2b27928ad316a8226295f3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"path        the path to the segment object (not including account)"},{"line_number":41,"context_line":"            /container/object_name"},{"line_number":42,"context_line":"etag        the ETag given back when the segment object was PUT,"},{"line_number":43,"context_line":"            or null"},{"line_number":44,"context_line":"size_bytes  the size of the complete segment object in"},{"line_number":45,"context_line":"            bytes, or null"},{"line_number":46,"context_line":"range       (optional) the (inclusive) range within the object to"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_5290ae4e","line":43,"updated":"2016-11-22 15:41:21.000000000","message":"this needs to be updated as optional","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"86d619e0635a74bfc87870591bdac255e39f75be","unresolved":false,"context_lines":[{"line_number":40,"context_line":"path        the path to the segment object (not including account)"},{"line_number":41,"context_line":"            /container/object_name"},{"line_number":42,"context_line":"etag        the ETag given back when the segment object was PUT,"},{"line_number":43,"context_line":"            or null"},{"line_number":44,"context_line":"size_bytes  the size of the complete segment object in"},{"line_number":45,"context_line":"            bytes, or null"},{"line_number":46,"context_line":"range       (optional) the (inclusive) range within the object to"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_6ccebb84","line":43,"in_reply_to":"7a77a97e_5290ae4e","updated":"2016-11-30 18:45:13.000000000","message":"Done","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"77f14945fdbf4606ec2b27928ad316a8226295f3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"etag        the ETag given back when the segment object was PUT,"},{"line_number":43,"context_line":"            or null"},{"line_number":44,"context_line":"size_bytes  the size of the complete segment object in"},{"line_number":45,"context_line":"            bytes, or null"},{"line_number":46,"context_line":"range       (optional) the (inclusive) range within the object to"},{"line_number":47,"context_line":"            use as a segment. If omitted, the entire object is used."},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_b2874211","line":45,"updated":"2016-11-22 15:41:21.000000000","message":"ditto as above","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"86d619e0635a74bfc87870591bdac255e39f75be","unresolved":false,"context_lines":[{"line_number":42,"context_line":"etag        the ETag given back when the segment object was PUT,"},{"line_number":43,"context_line":"            or null"},{"line_number":44,"context_line":"size_bytes  the size of the complete segment object in"},{"line_number":45,"context_line":"            bytes, or null"},{"line_number":46,"context_line":"range       (optional) the (inclusive) range within the object to"},{"line_number":47,"context_line":"            use as a segment. If omitted, the entire object is used."},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_8cc9577c","line":45,"in_reply_to":"7a77a97e_b2874211","updated":"2016-11-30 18:45:13.000000000","message":"Done","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"77f14945fdbf4606ec2b27928ad316a8226295f3","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if not (seg_dict.get(\u0027etag\u0027) is None or"},{"line_number":302,"context_line":"                isinstance(seg_dict[\u0027etag\u0027], six.string_types)):"},{"line_number":303,"context_line":"            errors.append("},{"line_number":304,"context_line":"                \"Index %d: \\\"etag\\\" must be a string or null\" % seg_index)"},{"line_number":305,"context_line":"            continue"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        if \u0027/\u0027 not in seg_dict[\u0027path\u0027].strip(\u0027/\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_b204a2c6","line":304,"updated":"2016-11-22 15:41:21.000000000","message":"nit: maybe remove null from this sentence? Since it no longer \u0027needs\u0027 to be null?","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"86d619e0635a74bfc87870591bdac255e39f75be","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if not (seg_dict.get(\u0027etag\u0027) is None or"},{"line_number":302,"context_line":"                isinstance(seg_dict[\u0027etag\u0027], six.string_types)):"},{"line_number":303,"context_line":"            errors.append("},{"line_number":304,"context_line":"                \"Index %d: \\\"etag\\\" must be a string or null\" % seg_index)"},{"line_number":305,"context_line":"            continue"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        if \u0027/\u0027 not in seg_dict[\u0027path\u0027].strip(\u0027/\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_ac76133c","line":304,"in_reply_to":"7a77a97e_b204a2c6","updated":"2016-11-30 18:45:13.000000000","message":"How about I add \"if provided\"?","commit_id":"f286158fe2954910e22940827f671037d01740d1"}],"test/functional/test_slo.py":[{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"8116bfac20543a67cd91ea16b4b3115a3e79c6cb","unresolved":false,"context_lines":[{"line_number":490,"context_line":"        self.assert_status(201)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    def test_slo_path_only(self):"},{"line_number":493,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-size\")"},{"line_number":494,"context_line":"        file_item.write("},{"line_number":495,"context_line":"            json.dumps([{"},{"line_number":496,"context_line":"                \u0027path\u0027: \u0027/%s/%s\u0027 % (self.env.container.name, \u0027seg_a\u0027)}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_6a7208e5","line":493,"updated":"2016-12-01 06:17:41.000000000","message":"super nit -\u003e manifest-a-missing-size-etag? ;)","commit_id":"ebc8d074c44860792f2a229cb6d13464b9ad58ae"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2016c9fd438f10b23fbb89ca4c199f7e77411f26","unresolved":false,"context_lines":[{"line_number":490,"context_line":"        self.assert_status(201)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    def test_slo_path_only(self):"},{"line_number":493,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-size\")"},{"line_number":494,"context_line":"        file_item.write("},{"line_number":495,"context_line":"            json.dumps([{"},{"line_number":496,"context_line":"                \u0027path\u0027: \u0027/%s/%s\u0027 % (self.env.container.name, \u0027seg_a\u0027)}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_c7394943","line":493,"in_reply_to":"5a74a57a_6a7208e5","updated":"2016-12-02 20:55:53.000000000","message":"Done","commit_id":"ebc8d074c44860792f2a229cb6d13464b9ad58ae"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"9cc77363ea89e1e3b447cb5750032b4d82fdda5c","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        self.assert_status(201)"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def test_slo_typo_etag(self):"},{"line_number":501,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-etag\")"},{"line_number":502,"context_line":"        try:"},{"line_number":503,"context_line":"            file_item.write("},{"line_number":504,"context_line":"                json.dumps([{"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_c60dd291","line":501,"updated":"2016-12-02 18:11:12.000000000","message":"If you are going to fix the nit from Mahati, I suppose this would be better as manifest-a-typo-etag as well.  Oh, and for test_slo_size_mismatch, the manifest name does not match either. you might look for others :-)","commit_id":"ebc8d074c44860792f2a229cb6d13464b9ad58ae"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"12d833f55cca0b5a0b32f93c531d59dedc638681","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        self.assert_status(201)"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def test_slo_typo_etag(self):"},{"line_number":501,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-etag\")"},{"line_number":502,"context_line":"        try:"},{"line_number":503,"context_line":"            file_item.write("},{"line_number":504,"context_line":"                json.dumps([{"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_477e19af","line":501,"in_reply_to":"3a71b18c_07234106","updated":"2016-12-02 21:02:53.000000000","message":"sure, I think I glanced at the name of the test and the manifest name too quickly ;-)","commit_id":"ebc8d074c44860792f2a229cb6d13464b9ad58ae"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2016c9fd438f10b23fbb89ca4c199f7e77411f26","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        self.assert_status(201)"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def test_slo_typo_etag(self):"},{"line_number":501,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-etag\")"},{"line_number":502,"context_line":"        try:"},{"line_number":503,"context_line":"            file_item.write("},{"line_number":504,"context_line":"                json.dumps([{"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_07234106","line":501,"in_reply_to":"3a71b18c_c60dd291","updated":"2016-12-02 20:55:53.000000000","message":"Done. Also cleaned up the one in test_slo_typo_size. test_slo_size_mismatch seems ok though? \"manifest-a-bad-size\" seems as descriptive as anything.","commit_id":"ebc8d074c44860792f2a229cb6d13464b9ad58ae"}],"test/functional/tests.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"5048ecc84691ad188f4775ce12d78f668eaecc8d","unresolved":false,"context_lines":[{"line_number":3482,"context_line":"                \u0027etag\u0027: hashlib.md5(\u0027a\u0027 * 1024 * 1024).hexdigest(),"},{"line_number":3483,"context_line":"                \u0027path\u0027: \u0027/%s/%s\u0027 % (self.env.container.name, \u0027seg_a\u0027)}]),"},{"line_number":3484,"context_line":"            parms\u003d{\u0027multipart-manifest\u0027: \u0027put\u0027})"},{"line_number":3485,"context_line":"        self.assert_status(201)"},{"line_number":3486,"context_line":""},{"line_number":3487,"context_line":"    def test_slo_typo_etag(self):"},{"line_number":3488,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-etag\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_e5958b88","line":3485,"updated":"2016-11-22 08:55:30.000000000","message":"Adding a test \"test_slo_path_only\" would be nice too - even if it\u0027s somewhat done twice then?","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"86d619e0635a74bfc87870591bdac255e39f75be","unresolved":false,"context_lines":[{"line_number":3482,"context_line":"                \u0027etag\u0027: hashlib.md5(\u0027a\u0027 * 1024 * 1024).hexdigest(),"},{"line_number":3483,"context_line":"                \u0027path\u0027: \u0027/%s/%s\u0027 % (self.env.container.name, \u0027seg_a\u0027)}]),"},{"line_number":3484,"context_line":"            parms\u003d{\u0027multipart-manifest\u0027: \u0027put\u0027})"},{"line_number":3485,"context_line":"        self.assert_status(201)"},{"line_number":3486,"context_line":""},{"line_number":3487,"context_line":"    def test_slo_typo_etag(self):"},{"line_number":3488,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-etag\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_8c1b171c","line":3485,"in_reply_to":"7a77a97e_cf1417a1","updated":"2016-11-30 18:45:13.000000000","message":"Done","commit_id":"f286158fe2954910e22940827f671037d01740d1"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"77f14945fdbf4606ec2b27928ad316a8226295f3","unresolved":false,"context_lines":[{"line_number":3482,"context_line":"                \u0027etag\u0027: hashlib.md5(\u0027a\u0027 * 1024 * 1024).hexdigest(),"},{"line_number":3483,"context_line":"                \u0027path\u0027: \u0027/%s/%s\u0027 % (self.env.container.name, \u0027seg_a\u0027)}]),"},{"line_number":3484,"context_line":"            parms\u003d{\u0027multipart-manifest\u0027: \u0027put\u0027})"},{"line_number":3485,"context_line":"        self.assert_status(201)"},{"line_number":3486,"context_line":""},{"line_number":3487,"context_line":"    def test_slo_typo_etag(self):"},{"line_number":3488,"context_line":"        file_item \u003d self.env.container.file(\"manifest-a-missing-etag\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_cf1417a1","line":3485,"in_reply_to":"7a77a97e_e5958b88","updated":"2016-11-22 15:41:21.000000000","message":"+1 I was kinda looking for it in the tests as well.","commit_id":"f286158fe2954910e22940827f671037d01740d1"}]}
