)]}'
{"swift/common/bufferedhttp.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"5153e110f54e56e92b6fbe1e41bfb738fafd003e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    from eventlet.green import httplib as green_httplib"},{"line_number":43,"context_line":"else:"},{"line_number":44,"context_line":"    httplib \u003d eventlet.import_patched(\u0027http.client\u0027)"},{"line_number":45,"context_line":"    from eventlet.green.http import client as green_httplib"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Apparently http.server uses this to decide when/whether to send a 431."},{"line_number":48,"context_line":"# Give it some slack, so the app is more likely to get the chance to reject"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb3d3c7_729a25c6","line":45,"updated":"2019-05-17 07:28:57.000000000","message":"Doesn\u0027t getting the \"patched\" version from eventlet the same as importing it as green_httplib. I guess not or you wouldn\u0027t have done it.","commit_id":"945d9c9015db74f1b25bb2e250415317d43f2727"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"5153e110f54e56e92b6fbe1e41bfb738fafd003e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# Give it some slack, so the app is more likely to get the chance to reject"},{"line_number":49,"context_line":"# with a 400 instead."},{"line_number":50,"context_line":"httplib._MAXHEADERS \u003d constraints.MAX_HEADER_COUNT * 1.6"},{"line_number":51,"context_line":"green_httplib._MAXHEADERS \u003d constraints.MAX_HEADER_COUNT * 1.6"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class BufferedHTTPResponse(HTTPResponse):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb3d3c7_52a921dd","line":51,"updated":"2019-05-17 07:28:57.000000000","message":"So this isn\u0027t doing the same thing as above? or is httplib (from eventlet.import_patched) !\u003d green_httplib?\n\nHuh, well yup, they are required. Tested different combinations. Including only using the green_httplib module.","commit_id":"945d9c9015db74f1b25bb2e250415317d43f2727"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b099e09e46a6e1986b5be1fb18574c55cadc4eb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# Give it some slack, so the app is more likely to get the chance to reject"},{"line_number":49,"context_line":"# with a 400 instead."},{"line_number":50,"context_line":"httplib._MAXHEADERS \u003d constraints.MAX_HEADER_COUNT * 1.6"},{"line_number":51,"context_line":"green_httplib._MAXHEADERS \u003d constraints.MAX_HEADER_COUNT * 1.6"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class BufferedHTTPResponse(HTTPResponse):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb3d3c7_f42a768e","line":51,"in_reply_to":"bfb3d3c7_52a921dd","updated":"2019-05-18 01:50:41.000000000","message":"Yeah, it\u0027s not clear to me why this was necessary :-/\n\nBut I couldn\u0027t make it work otherwise.","commit_id":"945d9c9015db74f1b25bb2e250415317d43f2727"}],"test/functional/test_account.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"00624cdbaa1318a26b1b67f46910bac0200be40e","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        if tf.skip:"},{"line_number":710,"context_line":"            raise SkipTest"},{"line_number":711,"context_line":"        if not six.PY2:"},{"line_number":712,"context_line":"            raise SkipTest(\"py3 doesn\u0027t know how to do non-ascii meta\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        def post(url, token, parsed, conn, name, value):"},{"line_number":715,"context_line":"            conn.request(\u0027POST\u0027, parsed.path, \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_7243adb0","line":712,"updated":"2019-03-22 19:35:36.000000000","message":"I don\u0027t much like this, but I keep bouncing between cpython trying to encode non-ascii header names to ascii, or requests trying to convert UTF-8 bytes to a native string and flipping out :-(\n\nWhat I\u0027d *really* kinda like to see is a DSVM-style job that starts services under py3 but then runs tests under py2... but that\u0027s a lot more devstack/zuul magic to sort out.","commit_id":"0f7f1f77383898fe30e0f37b1ab7a8c2bbad0b60"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b099e09e46a6e1986b5be1fb18574c55cadc4eb","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        if tf.skip:"},{"line_number":710,"context_line":"            raise SkipTest"},{"line_number":711,"context_line":"        if not six.PY2:"},{"line_number":712,"context_line":"            raise SkipTest(\"py3 doesn\u0027t know how to do non-ascii meta\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        def post(url, token, parsed, conn, name, value):"},{"line_number":715,"context_line":"            conn.request(\u0027POST\u0027, parsed.path, \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb3d3c7_846f49c4","line":712,"updated":"2019-05-18 01:50:41.000000000","message":"I need to hunt down what we can do about this... I think it might get messy, though :-(","commit_id":"945d9c9015db74f1b25bb2e250415317d43f2727"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"69a5860ee75cb5f0c4e27a6e245021b7c9c001fb","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        if tf.skip:"},{"line_number":710,"context_line":"            raise SkipTest"},{"line_number":711,"context_line":"        if not six.PY2:"},{"line_number":712,"context_line":"            raise SkipTest(\"py3 doesn\u0027t know how to do non-ascii meta\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        def post(url, token, parsed, conn, name, value):"},{"line_number":715,"context_line":"            conn.request(\u0027POST\u0027, parsed.path, \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb3d3c7_15f66c64","line":712,"in_reply_to":"bfb3d3c7_846f49c4","updated":"2019-05-30 00:06:45.000000000","message":"OK, I see the trouble (again): we\u0027re using swiftclient for this, so we get an error bubbling out of requests like\n\nERROR: test_unicode_metadata (test.functional.test_account.TestAccount)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/home/tburke/code/swift/test/functional/test_account.py\", line 723, in test_unicode_metadata\n    resp \u003d retry(post, uni_key, \u00271\u0027)\n  File \"/home/tburke/code/swift/test/functional/__init__.py\", line 1151, in retry\n    *args, **kwargs)\n  File \"/home/tburke/code/swift/test/functional/test_account.py\", line 714, in post\n    {\u0027X-Auth-Token\u0027: token, name: value})\n  File \"/home/tburke/code/swift/test/functional/__init__.py\", line 1085, in request_with_policy\n    return orig_request(method, url, body, headers)\n  File \"/home/tburke/code/python-swiftclient/swiftclient/client.py\", line 458, in request\n    files\u003dfiles, **self.requests_args)\n  File \"/home/tburke/code/python-swiftclient/swiftclient/client.py\", line 441, in _request\n    return self.request_session.request(*arg, **kwarg)\n  File \"/home/tburke/py37/lib64/python3.7/site-packages/requests/sessions.py\", line 519, in request\n    prep \u003d self.prepare_request(req)\n  File \"/home/tburke/py37/lib64/python3.7/site-packages/requests/sessions.py\", line 462, in prepare_request\n    hooks\u003dmerge_hooks(request.hooks, self.hooks),\n  File \"/home/tburke/py37/lib64/python3.7/site-packages/requests/models.py\", line 314, in prepare\n    self.prepare_headers(headers)\n  File \"/home/tburke/py37/lib64/python3.7/site-packages/requests/models.py\", line 450, in prepare_headers\n    self.headers[to_native_string(name)] \u003d value\n  File \"/home/tburke/py37/lib64/python3.7/site-packages/requests/_internal_utils.py\", line 25, in to_native_string\n    out \u003d string.decode(encoding)\nUnicodeDecodeError: \u0027ascii\u0027 codec can\u0027t decode byte 0xe0 in position 18: ordinal not in range(128)\n\n*BUT* -- setting unicode header *values* should be good, and we already have some of this test get skipped for non-integral webservers (which are likely to barf on funky header names), so... maybe it\u0027s OK to skip that part when running tests under py3, too?","commit_id":"945d9c9015db74f1b25bb2e250415317d43f2727"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"79f1079cb6b21a4860263c061397d0ed4f7d9f30","unresolved":false,"context_lines":[{"line_number":719,"context_line":"            return check_response(conn)"},{"line_number":720,"context_line":"        uni_key \u003d u\u0027X-Account-Meta-uni\\u0E12\u0027"},{"line_number":721,"context_line":"        uni_value \u003d u\u0027uni\\u0E12\u0027"},{"line_number":722,"context_line":"        if (tf.web_front_end \u003d\u003d \u0027integral\u0027 and six.PY2):"},{"line_number":723,"context_line":"            resp \u003d retry(post, uni_key, \u00271\u0027)"},{"line_number":724,"context_line":"            resp.read()"},{"line_number":725,"context_line":"            self.assertIn(resp.status, (201, 204))"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_e4df4463","line":722,"updated":"2019-07-19 14:57:41.000000000","message":"I\u0027d suggest adding a comment here for future reference why this is testing py2 only","commit_id":"2ff1629f7993a819cb73c52e6ed2d84aa4bf03f6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"54fb544515c2231297e9a8295e1c526a2c4f5c23","unresolved":false,"context_lines":[{"line_number":719,"context_line":"            return check_response(conn)"},{"line_number":720,"context_line":"        uni_key \u003d u\u0027X-Account-Meta-uni\\u0E12\u0027"},{"line_number":721,"context_line":"        uni_value \u003d u\u0027uni\\u0E12\u0027"},{"line_number":722,"context_line":"        if (tf.web_front_end \u003d\u003d \u0027integral\u0027 and six.PY2):"},{"line_number":723,"context_line":"            resp \u003d retry(post, uni_key, \u00271\u0027)"},{"line_number":724,"context_line":"            resp.read()"},{"line_number":725,"context_line":"            self.assertIn(resp.status, (201, 204))"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_d6c8d022","line":722,"in_reply_to":"7faddb67_e4df4463","updated":"2019-08-05 22:48:17.000000000","message":"Done","commit_id":"2ff1629f7993a819cb73c52e6ed2d84aa4bf03f6"}]}
