All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- HTTP Proxy support. (Pulls #259, #353)
- Add Digest authentication. (Pull #332)
- Add
.build_request()
method toClient
andAsyncClient
. (Pull #319) - Add
.elapsed
property on responses. (Pull #351) - Add support for
SSLKEYLOGFILE
in Python 3.8b4+. (Pull #301)
- Drop NPN support for HTTP version negotiation. (Pull #314)
- Fix distribution of type annotations for mypy (Pull #361).
- Set
Host
header when redirecting cross-origin. (Pull #321) - Drop
Content-Length
headers onGET
redirects. (Pull #310) - Raise
KeyError
if header isn't found inHeaders
. (Pull #324) - Raise
NotRedirectResponse
inresponse.next()
if there is no redirection to perform. (Pull #297) - Fix bug in calculating the HTTP/2 maximum frame size. (Pull #153)
- Enforce using
httpx.AsyncioBackend
for the synchronous client. (Pull #232) httpx.ConnectionPool
will properly release a dropped connection. (Pull #230)- Remove the
raise_app_exceptions
argument fromClient
. (Pull #238) DecodeError
will no longer be raised for an empty body encoded with Brotli. (Pull #237)- Added
http_versions
parameter toClient
. (Pull #250) - Only use HTTP/1.1 on short-lived connections like
httpx.get()
. (Pull #284) - Convert
Client.cookies
andClient.headers
when set as a property. (Pull #274) - Setting
HTTPX_DEBUG=1
enables debug logging on all requests. (Pull #277)
- Include files with source distribution to be installable. (Pull #233)
- Add the
trust_env
property toBaseClient
. (Pull #187) - Add the
links
property toBaseResponse
. (Pull #211) - Accept
ssl.SSLContext
instances intoSSLConfig(verify=...)
. (Pull #215) - Add
Response.stream_text()
with incremental encoding detection. (Pull #183) - Properly updated the
Host
header when a redirect changes the origin. (Pull #199) - Ignore invalid
Content-Encoding
headers. (Pull #196) - Use
~/.netrc
and~/_netrc
files by default whentrust_env=True
. (Pull #189) - Create exception base class
HTTPError
withrequest
andresponse
properties. (Pull #162) - Add HSTS preload list checking within
BaseClient
to upgrade HTTP URLs to HTTPS. (Pull #184) - Switch IDNA encoding from IDNA 2003 to IDNA 2008. (Pull #161)
- Expose base classes for alternate concurrency backends. (Pull #178)
- Improve Multipart parameter encoding. (Pull #167)
- Add the
headers
proeprty toBaseClient
. (Pull #159) - Add support for Google's
brotli
library. (Pull #156) - Remove deprecated TLS versions (TLSv1 and TLSv1.1) from default
SSLConfig
. (Pull #155) - Fix
URL.join(...)
to work similarly to RFC 3986 URL joining. (Pull #144)
- Check for disconnections when searching for an available
connection in
ConnectionPool.keepalive_connections
(Pull #145) - Allow string comparison for
URL
objects (Pull #139) - Add HTTP status codes 418 and 451 (Pull #135)
- Add support for client certificate passwords (Pull #118)
- Enable post-handshake client cert authentication for TLSv1.3 (Pull #118)
- Disable using
commonName
for hostname checking for OpenSSL 1.1.0+ (Pull #118) - Detect encoding for
Response.json()
(Pull #116)
- Check for connection aliveness on re-acquiry (Pull #111)
- Improve
USER_AGENT
(Pull #110) - Add
Connection: keep-alive
by default to HTTP/1.1 connections. (Pull #110)
- Include
Host
header by default. (Pull #109) - Improve HTTP protocol detection. (Pull #107)
- Implement read and write timeouts (Pull #104)
- Handle early connection closes (Pull #103)
- Use urllib3's
DEFAULT_CIPHERS
for theSSLConfig
object. (Pull #100)
- Add support for setting a
base_url
on theClient
.
- Honor
local_flow_control_window
for HTTP/2 connections (Pull #98)