Releases: pydantic/httpx2
Releases · pydantic/httpx2
Release list
v2.7.0
This release syncs the vendored WebSocket support with the latest httpx-ws, which was previously pinned to an outdated snapshot.
What's Changed
Full Changelog: v2.6.0...v2.7.0
v2.6.0
The main feature in this release is support for WebSockets! 🎉
from httpx2 import AsyncClient
async with httpx2.AsyncClient() as client:
async with client.websocket("ws://localhost:8000/ws") as ws:
await ws.send_text("Hello!")
message = await ws.receive_text()What's Changed
- Read _expire_at only once in has_expired() by @mbeijen in #1045
- Add native WebSocket support by vendoring httpx-ws by @Kludex in #1042
- Add QUERY method support (RFC 10008) by @Diegorro98 in #1055
- fix: clean up garbage connections on cancellation in AsyncConnectionPool by @mbeijen in #983
- Bump click lower bound to >=8.4 and drop upper bound by @drusc0 in #1040
New Contributors
- @achapkowski made their first contribution in #1058
- @hrnciar made their first contribution in #1054
- @Diegorro98 made their first contribution in #1055
- @drusc0 made their first contribution in #1041
Full Changelog: v2.5.0...v2.6.0
v2.4.0
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
v2.3.0
What's Changed
- Allow
default_encodingcallable to return None by @Kludex in #951 - perf: use memoryview in write() to avoid copies by @mbeijen in #954
- perf: use anyio fast_acquire for Lock and Semaphore by @mbeijen in #970
- Make zstd import optional on Python 3.14 by @Kludex in #1000
- Switch from
certifitotruststorefor default SSL verification by @Kludex in #209 - Switch
httpcore2fromcertifitotruststorefor default SSL verification by @Kludex in #1002 - Store elapsed time on stream wrapper to avoid reference cycles by @mbeijen in #948
- perf: Rewrite
_assign_requests_to_connectionsas a single-pass loop by @mbeijen in #974 - create_ssl_context: raise when verify is a str and cert is provided by @mbeijen in #990
New Contributors
- @hugovk made their first contribution in #960
- @cclauss made their first contribution in #972
- @lundberg made their first contribution in #978
- @angryfoxx made their first contribution in #977
Full Changelog: v2.2.0...v2.3.0
v2.2.0
v2.1.0
What's Changed
- Drop Python 3.9 support, add Python 3.14 by @Kludex in #208
- Use stdlib
compression.zstdfor Zstd decompression on Python 3.14+ by @Kludex in #932 - Bundle LICENSE.md in httpx2 and httpcore2 sdists by @Kludex in #938
- Wait for positive HTTP/2 flow-control credit when stream window goes negative by @mbeijen in #935
New Contributors
- @hramezani made their first contribution in #931
- @mbeijen made their first contribution in #936
Full Changelog: v2.0.0...v2.1.0