)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"e7e9cd1ddeccb5f1736c84d58d939c5f780142c5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"would be for 3.8, and we need to be able to target an earlier Python."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So, intercept the request line immediately before parsing and re-write"},{"line_number":16,"context_line":"it to be RFC-compliant. Note that this is done for Python 2 as well,"},{"line_number":17,"context_line":"though there should be no change in the request environment that"},{"line_number":18,"context_line":"eventlet eventually hands to us."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fce034c_0edbf24e","line":16,"updated":"2019-04-18 22:59:50.000000000","message":"I do not understand the phrase \"no change to the request environment\". Somehow I suspect we\u0027re not talking about changes to req.environ{}. Did you mean to say that the parse_request() method is not used on py2 and thus this code does nothing on py2?","commit_id":"efb21cf711be33453950e8c4a936ce8c23b67eb2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"33080b4ec511c4ffde7ae4714423794156e3f378","unresolved":false,"context_lines":[{"line_number":13,"context_line":"would be for 3.8, and we need to be able to target an earlier Python."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So, intercept the request line immediately before parsing and re-write"},{"line_number":16,"context_line":"it to be RFC-compliant. Note that this is done for Python 2 as well,"},{"line_number":17,"context_line":"though there should be no change in the request environment that"},{"line_number":18,"context_line":"eventlet eventually hands to us."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffb9cba7_0390f64d","line":16,"in_reply_to":"3fce034c_0edbf24e","updated":"2019-04-24 17:27:10.000000000","message":"\u003e Somehow I suspect we\u0027re not talking about changes to req.environ{}\n\nActually, the request.environ dict is exactly what I was referring to. WSGI puts the responsibility for unquoting on the server (though it does so rather obtusely, via the URL-reconstruction section [1]) so by the time it gets to us, we should have WSGI strings in SCRIPT_NAME and PATH_INFO. (I thought QUERY_STRING, too? Hmm... I ought to double check my assumptions there...)\n\nThis is all because of some long-lurking unicode/bytes issues in cpython, but I don\u0027t expect to have them fixed [2] until *at least* 3.8, more likely 3.9 (and while there may be backports to prior branches, do we really want to be declaring support for particular *revisions* of a minor release when we could support the whole release? (And more importantly, do it *today*.)\n\n[1] https://www.python.org/dev/peps/pep-3333/#url-reconstruction\n[2] https://github.com/python/cpython/pull/7932","commit_id":"efb21cf711be33453950e8c4a936ce8c23b67eb2"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"631c691a19ce94103affed68279b3345e899feb0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"would be for 3.8, and we need to be able to target an earlier Python."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So, intercept the request line immediately before parsing and re-write"},{"line_number":16,"context_line":"it to be RFC-compliant. Note that this is done for Python 2 as well,"},{"line_number":17,"context_line":"though there should be no change in the request environment that"},{"line_number":18,"context_line":"eventlet eventually hands to us."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffb9cba7_64dbdf1a","line":16,"in_reply_to":"ffb9cba7_0390f64d","updated":"2019-04-25 22:46:37.000000000","message":"I get this. But I\u0027m asking if the shim applies to py2 too, or only to py3 (if, e.g. the method is not invoked on py2).","commit_id":"efb21cf711be33453950e8c4a936ce8c23b67eb2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5608b640636150a36f0b17601beed659c5d81002","unresolved":false,"context_lines":[{"line_number":13,"context_line":"would be for 3.8, and we need to be able to target an earlier Python."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So, intercept the request line immediately before parsing and re-write"},{"line_number":16,"context_line":"it to be RFC-compliant. Note that this is done for Python 2 as well,"},{"line_number":17,"context_line":"though there should be no change in the request environment that"},{"line_number":18,"context_line":"eventlet eventually hands to us."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffb9cba7_712cdcab","line":16,"in_reply_to":"ffb9cba7_64dbdf1a","updated":"2019-04-29 05:05:39.000000000","message":"Yes; eventlet always calls parse_request(), fairly early on in handle_one_request(): https://github.com/eventlet/eventlet/blob/v0.24.1/eventlet/wsgi.py#L417\n\nI debated about jumping straight to the super call on py2, but having the shim active for both was easiest in terms of testing. Looking at the ratio of tests running under py3 to tests running under py2 is about the only metric I have to go off of to get some sense of our progress. While there are some tests that simply get skipped on py3 (like the ring builder debacle), I don\u0027t particularly want to add *more* version-specific tests.","commit_id":"efb21cf711be33453950e8c4a936ce8c23b67eb2"}]}
