What's Changed
- Use RLock instead of Lock to prevent thread deadlock by @mbeijen in #1008
- In the main description, replace “Python 3” with just “Python” by @musicinmybrain in #1011
- Release HTTP/2 semaphore permit on NoAvailableStreamIDError by @mbeijen in #1012
- Move HTTP/2 stream events cleanup inside _state_lock by @mbeijen in #1013
- Allow version 15 of rich in httpx2’s cli extra by @musicinmybrain in #1015
- Test with chardet 6.0.0.post1 by @musicinmybrain in #1017
- Mark httpx2 and httpcore2 classifiers as Production/Stable by @Kludex in #1021
- Parse empty Digest auth realm without crashing by @mbeijen in #1023
- Decode IDNA labels in non-leading host positions by @mbeijen in #1018
- Enable ruff UP rule by @Kludex in #1025
- Limit chained Content-Encoding decoders to 5 by @Kludex in #1027
- Use a custom deprecation warning visible by default by @Kludex in #1029
- Make the code more strictly typed without changing the type checker by @Kludex in #1030
- Version 2.4.0 by @Kludex in #1031
New Contributors
- @musicinmybrain made their first contribution in #1011
Full Changelog: v2.3.0...v2.4.0