)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7525fce94246f954c1269e18b851ae265200a3ca","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not set Content-Type to \u0027\u0027 with new requests."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_d3c05d2d","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":44},"updated":"2017-06-13 13:43:23.000000000","message":"Related-Change: I035f8b4b9c9ccdc79820b907770a48f86d0343b4","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2df4696c65b28cd0da5e46c3637869f34583e14c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not set Content-Type to \u0027\u0027 with new requests."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_e52824e3","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":44},"in_reply_to":"7f231b9d_d3c05d2d","updated":"2017-06-13 17:41:48.000000000","message":"Done","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7525fce94246f954c1269e18b851ae265200a3ca","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do not set Content-Type to \u0027\u0027 with new requests."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"},{"line_number":13,"context_line":"conditional on the requests version, so that with sufficiently new"},{"line_number":14,"context_line":"requests libraries, the Content-Type is not set."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_9b29e19c","line":11,"range":{"start_line":10,"start_character":0,"end_line":11,"end_character":13},"updated":"2017-06-13 13:43:23.000000000","message":"specifically https://github.com/requests/requests/issues/2071","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2df4696c65b28cd0da5e46c3637869f34583e14c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do not set Content-Type to \u0027\u0027 with new requests."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"},{"line_number":13,"context_line":"conditional on the requests version, so that with sufficiently new"},{"line_number":14,"context_line":"requests libraries, the Content-Type is not set."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_457d98e5","line":11,"range":{"start_line":10,"start_character":0,"end_line":11,"end_character":13},"in_reply_to":"7f231b9d_9b29e19c","updated":"2017-06-13 17:41:48.000000000","message":"Done","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7525fce94246f954c1269e18b851ae265200a3ca","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"},{"line_number":13,"context_line":"conditional on the requests version, so that with sufficiently new"},{"line_number":14,"context_line":"requests libraries, the Content-Type is not set."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_c64f7cbb","line":12,"range":{"start_line":12,"start_character":18,"end_line":12,"end_character":32},"updated":"2017-06-13 13:43:23.000000000","message":"including 2.4.0\n\nopenstack global requirements has requests\u003e\u003d2.14.2 so do we have the option of bumping our minimum requests requirement?","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2df4696c65b28cd0da5e46c3637869f34583e14c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"},{"line_number":13,"context_line":"conditional on the requests version, so that with sufficiently new"},{"line_number":14,"context_line":"requests libraries, the Content-Type is not set."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_0587a0d9","line":12,"range":{"start_line":12,"start_character":18,"end_line":12,"end_character":32},"in_reply_to":"7f231b9d_c64f7cbb","updated":"2017-06-13 17:41:48.000000000","message":"Done","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e39c8dc877cf4753445946934321f94017a9c92b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Previously, python-swiftclient worked around a requests issue where"},{"line_number":10,"context_line":"Content-Type could be set to application/x-www-form-urlencoded when"},{"line_number":11,"context_line":"using python3. This issue has been resolved and a fix released in"},{"line_number":12,"context_line":"requests versions newer than 2.4. The patch makes the workaround"},{"line_number":13,"context_line":"conditional on the requests version, so that with sufficiently new"},{"line_number":14,"context_line":"requests libraries, the Content-Type is not set."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_dc72a1e3","line":12,"range":{"start_line":12,"start_character":18,"end_line":12,"end_character":32},"in_reply_to":"7f231b9d_c64f7cbb","updated":"2017-06-13 20:12:57.000000000","message":"We could, but we\u0027d have to take exactly what\u0027s in global-requirements currently, which means dropping support for some distro-packaged versions of requests. I\u0027m not opposed to the version detection if it means CentOS only has to install swiftclient from pip instead of requests+swiftclient.","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7525fce94246f954c1269e18b851ae265200a3ca","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"For reference, requests 2.4 was released August 29th, 2014."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Fixes #1433767"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ieb2243d2ff5326920a27ce8c3c6f0f5c396701ed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_db08792e","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":5},"updated":"2017-06-13 13:43:23.000000000","message":"Closes-Bug: #1433767\n\nwill make it hyperlink","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2df4696c65b28cd0da5e46c3637869f34583e14c","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"For reference, requests 2.4 was released August 29th, 2014."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Fixes #1433767"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ieb2243d2ff5326920a27ce8c3c6f0f5c396701ed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_e56dc432","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":5},"in_reply_to":"7f231b9d_db08792e","updated":"2017-06-13 17:41:48.000000000","message":"Done","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"}],"swiftclient/client.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7525fce94246f954c1269e18b851ae265200a3ca","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        headers[\u0027Content-Type\u0027] \u003d content_type"},{"line_number":1288,"context_line":"    elif \u0027Content-Type\u0027 not in headers:"},{"line_number":1289,"context_line":"        if StrictVersion(requests.__version__) \u003c StrictVersion(\u00272.4.0\u0027):"},{"line_number":1290,"context_line":"            # python-requests sets application/x-www-form-urlencoded otherwise"},{"line_number":1291,"context_line":"            headers[\u0027Content-Type\u0027] \u003d \u0027\u0027"},{"line_number":1292,"context_line":"    if not contents:"},{"line_number":1293,"context_line":"        headers[\u0027Content-Length\u0027] \u003d \u00270\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_f63587db","line":1290,"range":{"start_line":1290,"start_character":14,"end_line":1290,"end_character":18},"updated":"2017-06-13 13:43:23.000000000","message":"nit: I lost some time trying to reproduce this in py2 :/ might be worth clarifying that the comment applies to py3","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2df4696c65b28cd0da5e46c3637869f34583e14c","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        headers[\u0027Content-Type\u0027] \u003d content_type"},{"line_number":1288,"context_line":"    elif \u0027Content-Type\u0027 not in headers:"},{"line_number":1289,"context_line":"        if StrictVersion(requests.__version__) \u003c StrictVersion(\u00272.4.0\u0027):"},{"line_number":1290,"context_line":"            # python-requests sets application/x-www-form-urlencoded otherwise"},{"line_number":1291,"context_line":"            headers[\u0027Content-Type\u0027] \u003d \u0027\u0027"},{"line_number":1292,"context_line":"    if not contents:"},{"line_number":1293,"context_line":"        headers[\u0027Content-Length\u0027] \u003d \u00270\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_c5688822","line":1290,"range":{"start_line":1290,"start_character":14,"end_line":1290,"end_character":18},"in_reply_to":"7f231b9d_f63587db","updated":"2017-06-13 17:41:48.000000000","message":"Done","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"}],"tests/unit/test_swiftclient.py":[{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a2e2ac0d6db1ecc715f0fcea96c6d218192782b6","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"            (\u0027PUT\u0027, \u0027/container/obj\u0027, \u0027body\u0027, {"},{"line_number":1176,"context_line":"                \u0027x-auth-token\u0027: \u0027TOKEN\u0027,"},{"line_number":1177,"context_line":"                \u0027content-length\u0027: \u00274\u0027,"},{"line_number":1178,"context_line":"                \u0027content-type\u0027: \u0027binary/octet-stream\u0027"},{"line_number":1179,"context_line":"            }),"},{"line_number":1180,"context_line":"        ])"},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f0e0f27_0b6cad34","line":1178,"updated":"2017-06-09 09:41:55.000000000","message":"Forgot b\u0027 character.\nPlease find out more information. [1]\n\n[1] https://docs.python.org/3.3/reference/lexical_analysis.html#string-and-bytes-literals","commit_id":"3a8a46f46b99776b6c7cc6e1675a9e6ed3312094"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"22288145f85b76966bddb4d459630ee011c76e96","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"            (\u0027PUT\u0027, \u0027/container/obj\u0027, \u0027body\u0027, {"},{"line_number":1176,"context_line":"                \u0027x-auth-token\u0027: \u0027TOKEN\u0027,"},{"line_number":1177,"context_line":"                \u0027content-length\u0027: \u00274\u0027,"},{"line_number":1178,"context_line":"                \u0027content-type\u0027: \u0027binary/octet-stream\u0027"},{"line_number":1179,"context_line":"            }),"},{"line_number":1180,"context_line":"        ])"},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f0e0f27_abe02198","line":1178,"in_reply_to":"9f0e0f27_0b6cad34","updated":"2017-06-09 09:43:05.000000000","message":"My mistake. Not here, please see below comment.","commit_id":"3a8a46f46b99776b6c7cc6e1675a9e6ed3312094"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a2e2ac0d6db1ecc715f0fcea96c6d218192782b6","unresolved":false,"context_lines":[{"line_number":1387,"context_line":"        c.put_object(url\u003d\u0027http://www.test.com\u0027, http_conn\u003dconn)"},{"line_number":1388,"context_line":"        request_header \u003d resp.requests_params[\u0027headers\u0027]"},{"line_number":1389,"context_line":"        self.assertEqual(request_header[\u0027content-type\u0027],"},{"line_number":1390,"context_line":"                         \u0027binary/octet-stream\u0027)"},{"line_number":1391,"context_line":""},{"line_number":1392,"context_line":"    def test_content_type_in_headers(self):"},{"line_number":1393,"context_line":"        conn \u003d c.http_connection(u\u0027http://www.test.com/\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f0e0f27_0b270d15","line":1390,"updated":"2017-06-09 09:41:55.000000000","message":"Forgot","commit_id":"3a8a46f46b99776b6c7cc6e1675a9e6ed3312094"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"22288145f85b76966bddb4d459630ee011c76e96","unresolved":false,"context_lines":[{"line_number":1387,"context_line":"        c.put_object(url\u003d\u0027http://www.test.com\u0027, http_conn\u003dconn)"},{"line_number":1388,"context_line":"        request_header \u003d resp.requests_params[\u0027headers\u0027]"},{"line_number":1389,"context_line":"        self.assertEqual(request_header[\u0027content-type\u0027],"},{"line_number":1390,"context_line":"                         \u0027binary/octet-stream\u0027)"},{"line_number":1391,"context_line":""},{"line_number":1392,"context_line":"    def test_content_type_in_headers(self):"},{"line_number":1393,"context_line":"        conn \u003d c.http_connection(u\u0027http://www.test.com/\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f0e0f27_eb517964","line":1390,"in_reply_to":"9f0e0f27_0b270d15","updated":"2017-06-09 09:43:05.000000000","message":"Forgot b\u0027 character.\nPlease find out more information. [1]\n[1] https://docs.python.org/3.3/reference/lexical_analysis.html#string-and-bytes-literals","commit_id":"3a8a46f46b99776b6c7cc6e1675a9e6ed3312094"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"9456c2b868b5b45ef04d4926dde3faad0f70b7af","unresolved":false,"context_lines":[{"line_number":1387,"context_line":"        c.put_object(url\u003d\u0027http://www.test.com\u0027, http_conn\u003dconn)"},{"line_number":1388,"context_line":"        request_header \u003d resp.requests_params[\u0027headers\u0027]"},{"line_number":1389,"context_line":"        self.assertEqual(request_header[\u0027content-type\u0027],"},{"line_number":1390,"context_line":"                         \u0027binary/octet-stream\u0027)"},{"line_number":1391,"context_line":""},{"line_number":1392,"context_line":"    def test_content_type_in_headers(self):"},{"line_number":1393,"context_line":"        conn \u003d c.http_connection(u\u0027http://www.test.com/\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f231b9d_1fa98fde","line":1390,"in_reply_to":"9f0e0f27_eb517964","updated":"2017-06-09 17:17:55.000000000","message":"Done","commit_id":"3a8a46f46b99776b6c7cc6e1675a9e6ed3312094"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f0cc2780058da68ff8e9e322d6d99db9ba008c05","unresolved":false,"context_lines":[{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"        c.put_object(url\u003d\u0027http://www.test.com\u0027, http_conn\u003dconn)"},{"line_number":1402,"context_line":"        request_header \u003d resp.requests_params[\u0027headers\u0027]"},{"line_number":1403,"context_line":"        self.assertFalse(\u0027content-type\u0027 in request_header)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    def test_content_type_in_headers(self):"},{"line_number":1406,"context_line":"        conn \u003d c.http_connection(u\u0027http://www.test.com/\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_6fe1bc9a","line":1403,"updated":"2017-06-12 17:15:22.000000000","message":"nit: assertNotIn might make for a more useful failure message.","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7525fce94246f954c1269e18b851ae265200a3ca","unresolved":false,"context_lines":[{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"        c.put_object(url\u003d\u0027http://www.test.com\u0027, http_conn\u003dconn)"},{"line_number":1402,"context_line":"        request_header \u003d resp.requests_params[\u0027headers\u0027]"},{"line_number":1403,"context_line":"        self.assertFalse(\u0027content-type\u0027 in request_header)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    def test_content_type_in_headers(self):"},{"line_number":1406,"context_line":"        conn \u003d c.http_connection(u\u0027http://www.test.com/\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_960893d9","line":1403,"range":{"start_line":1403,"start_character":26,"end_line":1403,"end_character":38},"updated":"2017-06-13 13:43:23.000000000","message":"the existing test works so I assume the headers are lower-cased somewhere in the request path","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"2df4696c65b28cd0da5e46c3637869f34583e14c","unresolved":false,"context_lines":[{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"        c.put_object(url\u003d\u0027http://www.test.com\u0027, http_conn\u003dconn)"},{"line_number":1402,"context_line":"        request_header \u003d resp.requests_params[\u0027headers\u0027]"},{"line_number":1403,"context_line":"        self.assertFalse(\u0027content-type\u0027 in request_header)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    def test_content_type_in_headers(self):"},{"line_number":1406,"context_line":"        conn \u003d c.http_connection(u\u0027http://www.test.com/\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_45935850","line":1403,"in_reply_to":"7f231b9d_6fe1bc9a","updated":"2017-06-13 17:41:48.000000000","message":"Done","commit_id":"cea8db1d913ca9a8e33859346ef2ddbe1879eacc"}]}
