This a a great example of good work getting 'upstreamed.' The go-to solution for using requests and urllib3 in the browser had been Koen Vossen's 'pyodide-http' package, which you'd install in PyScript/Pyodide and then call 'pyodide_http.patch_all()`. It monkey-patched requests and urllib3 to use the browser API's. [1]
Then 'pyodide-http' got adopted into the Pyodide-included packages[2], so you didn't have to specify it for install, just import it and run patch_all().
And now a similar technique has been incorporated directly into urllib3. (Not a direct port - as far as I know Joe Marshall and others did a full reimplementation so that urllib3's API's would be maintained as much as possible). [2]
Very cool.
Edit: Looks like there's a note to this same effect on Seth Larson's post about urllib3's future. [3]
Then 'pyodide-http' got adopted into the Pyodide-included packages[2], so you didn't have to specify it for install, just import it and run patch_all().
And now a similar technique has been incorporated directly into urllib3. (Not a direct port - as far as I know Joe Marshall and others did a full reimplementation so that urllib3's API's would be maintained as much as possible). [2]
Very cool.
Edit: Looks like there's a note to this same effect on Seth Larson's post about urllib3's future. [3]
[1] https://github.com/koenvo/pyodide-http
[2] https://pyodide.org/en/stable/usage/packages-in-pyodide.html
[3] https://sethmlarson.dev/urllib3-is-fundraising-for-http2-sup...