python-hyper / h11

A pure-Python, bring-your-own-I/O implementation of HTTP/1.1
https://h11.readthedocs.io/
MIT License
490 stars 62 forks source link

Drop support for Python 2? #114

Closed pgjones closed 2 years ago

pgjones commented 3 years ago

I'd like to drop support for Python 2, type hint this codebase, and make use of features like dataclasses. I've a local version where I've done this - to allow testing of mypyc (it does speed things up). I know around this time last year there was a need/desire to keep Python 2 support for urllib3 (have I remembered this correctly?). Is there still a motivating need for Python 2 support?

To clarify I think the status quo is currently fine, however if Python 2 isn't needed/desired then great.

pquentin commented 3 years ago

urllib3 does not use h11 (yet?) and will soon issue a v2 that drops Python 2 support anyway. We do use h11 in https://github.com/python-trio/hip that does support Python 2. I'd be happy to remove Python 2 support there too, but @njsmith has been opposed to it in the past.

njsmith commented 3 years ago

Yeah, even I'm running out of excuses to keep py2 support at this point :-)

bluetech commented 3 years ago

So are we OK with dropping Python 2 for the next version? I am willing to work on it if so.

The reason I want to drop Python 2 is that I want to add inline type annotations to h11, like we did for wsproto, if that's desirable. It is possible to use type comments but that's painful.

pquentin commented 3 years ago

Yes, you can open a pull request to remove Python 2 support! (And another one later for type annotations, I guess)

pgjones commented 3 years ago

@bluetech I have a typed branch - I'll review your PR then push it up (although I'm aiming to merge the line ending PR and release before dropping Py2).

bluetech commented 3 years ago

I have a typed branch

Awesome. Feel free to add me as a reviewer.

Kriechi commented 2 years ago

Done in v0.12.0 (2021-01-01).

hugovk commented 2 years ago

Looks like much of this comment could be removed now? There is no longer self._start or self.compress in the file:

https://github.com/python-hyper/h11/blob/fb6c715184c6a1f29e299d2f63d722b2ea4309d5/h11/_receivebuffer.py#L23-L43

Kriechi commented 2 years ago

would you mind opening this as a new issue / improvement / feature request ?

hugovk commented 2 years ago

Sure, please see https://github.com/python-hyper/h11/issues/152.