Status of the urllib3 port

Various responses to the priorities/roadmap post mentioned that the urllib3/requests port was the library that missed the most in Trio.

I agree! That’s why I started working on it in January 2018, basically by trying to turn @njs’s ideas into code and then asking him for reviews (with help of a few other contributors). We’re now in February 2019. As it’s only my priority every few months, the progress is irregular: while we did improve things a lot, there is still a lot of work left!

The working repository is https://github.com/python-trio/urllib3. The current task is to ensure that all existing tests pass, so that we get back to 100% coverage. We’re at 93% right now. Here’s my elaborate process:

  1. pick a xfailing or skipped test
  2. try to make it pass
  3. send the modification for review
  4. rinse and repeat

As a result, I’m afraid there are no identified good first bugs: I can’t tell before working on a test how easy it will be! But I’d be happy to help if anyone want to try doing this.

Maybe a good first task would be to read https://github.com/python-trio/urllib3/issues/1, try running the tests using tox, and document/improve the process for the next contributors? Again, I’d be happy to help.

2 Likes

We got to 100% coverage, then found a way to run all tests with Trio, asyncio and AnyIO, started migrating some of them with great success and then I lost motivation. :slight_smile: One big issue was that I could not merge urllib3 changes fast enough and was months behind the urllib3 main branch.

The focus is now to work on urllib3 itself and making it very slowly more async-friendly. The 2.0 version will pave the way for using h11 optionally for example.

1 Like