All Versions
63
Latest Version
Avg Release Cycle
28 days
Latest Release
740 days ago
Changelog History
Page 2
Changelog History
Page 2
-
v0.18.0 Changes
April 27, 2021๐ The 0.18.x release series formalises our low-level Transport API, introducing the base classes
httpx.BaseTransport
andhttpx.AsyncBaseTransport
.See the "Writing custom transports" documentation and the
httpx.BaseTransport.handle_request()
docstring for more complete details on implementing custom transports.Pull request #1522 includes a checklist of differences from the previous
httpcore
transport API, for developers implementing custom transports.๐ The following API changes have been issuing deprecation warnings since 0.17.0 onwards, and are now fully deprecated...
- You should now use httpx.codes consistently instead of httpx.StatusCodes.
- ๐ Use limits=... instead of pool_limits=....
- ๐ Use proxies={"http://": ...} instead of proxies={"http": ...} for scheme-specific mounting.
๐ Changed
- Transport instances now inherit from
httpx.BaseTransport
orhttpx.AsyncBaseTransport
, and should implement either thehandle_request
method orhandle_async_request
method. (Pull #1522, #1550) - The
response.ext
property andResponse(ext=...)
argument are now namedextensions
. (Pull #1522) - ๐ The recommendation to not use
data=<bytes|str|bytes (a)iterator>
in favour ofcontent=<bytes|str|bytes (a)iterator>
has now been escalated to a deprecation warning. (Pull #1573) - โฌ๏ธ Drop
Response(on_close=...)
from API, since it was a bit of leaking implementation detail. (Pull #1572) - When using a client instance, cookies should always be set on the client, rather than on a per-request basis. We prefer enforcing a stricter API here because it provides clearer expectations around cookie persistence, particularly when redirects occur. (Pull #1574)
- ๐ป The runtime exception
httpx.ResponseClosed
is now namedhttpx.StreamClosed
. (#1584) - โก๏ธ The
httpx.QueryParams
model now presents an immutable interface. There is a discussion on the design and motivation here. Useclient.params = client.params.merge(...)
instead ofclient.params.update(...)
. The basic query manipulation methods arequery.set(...)
,query.add(...)
, andquery.remove()
. (#1600)
โ Added
- The
Request
andResponse
classes can now be serialized using pickle. (#1579) - ๐ Handle
data={"key": [None|int|float|bool]}
cases. (Pull #1539) - ๐ Support
httpx.URL(**kwargs)
, for examplehttpx.URL(scheme="https", host="www.example.com", path="/')
, orhttpx.URL("https://www.example.com/", username="[email protected]", password="123 456")
. (Pull #1601) - ๐ Support
url.copy_with(params=...)
. (Pull #1601) - โ Add
url.params
parameter, returning an immutableQueryParams
instance. (Pull #1601) - Support query manipulation methods on the URL class. These are
url.copy_set_param()
,url.copy_add_param()
,url.copy_remove_param()
,url.copy_merge_params()
. (Pull #1601) - The
httpx.URL
class now performs port normalization, so:80
ports are stripped fromhttp
URLs and:443
ports are stripped fromhttps
URLs. (Pull #1603) - The
URL.host
property returns unicode strings for internationalized domain names. TheURL.raw_host
property returns byte strings with IDNA escaping applied. (Pull #1590)
๐ Fixed
- ๐ Fix Content-Length for cases of
files=...
where unicode string is used as the file content. (Pull #1537) - ๐ Fix some cases of merging relative URLs against
Client(base_url=...)
. (Pull #1532) - The
request.content
attribute is now always available except for streaming content, which requires an explicit.read()
. (Pull #1583)
-
v0.17.1 Changes
March 15, 2021๐ Fixed
- Type annotation on
CertTypes
allowskeyfile
andpassword
to be optional. (Pull #1503) - ๐ Fix httpcore pinned version. (Pull #1495)
- Type annotation on
-
v0.17.0 Changes
February 28, 2021โ Added
- โ Add
httpx.MockTransport()
, allowing to mock out a transport using pre-determined responses. (Pull #1401, Pull #1449) - โ Add
httpx.HTTPTransport()
andhttpx.AsyncHTTPTransport()
default transports. (Pull #1399) - โ Add mount API support, using
httpx.Client(mounts=...)
. (Pull #1362) - Add
chunk_size
parameter toiter_raw()
,iter_bytes()
,iter_text()
. (Pull #1277) - โ Add
keepalive_expiry
parameter tohttpx.Limits()
configuration. (Pull #1398) - โ Add repr to
httpx.Cookies
to display available cookies. (Pull #1411) - โ Add support for
params=<tuple>
(previously onlyparams=<list>
was supported). (Pull #1426)
๐ Fixed
- โ Add missing
raw_path
to ASGI scope. (Pull #1357) - Tweak
create_ssl_context
defaults to usetrust_env=True
. (Pull #1447) - Properly URL-escape WSGI
PATH_INFO
. (Pull #1391) - 0๏ธโฃ Properly set default ports in WSGI transport. (Pull #1469)
- Properly encode slashes when using
base_url
. (Pull #1407) - Properly map exceptions in
request.aclose()
. (Pull #1465)
- โ Add
-
v0.16.1 Changes
October 08, 2020 -
v0.16.0 Changes
October 06, 20200.16.0 (October 6th, 2020)
๐ Changed
- Preserve HTTP header casing. (Pull #1338, encode/httpcore#216, python-hyper/h11#104)
- โฌ๏ธ Drop
response.next()
andresponse.anext()
methods in favour ofresponse.next_request
attribute. (Pull #1339) - Closed clients now raise a runtime error if attempting to send a request. (Pull #1346)
โ Added
- โ Add Python 3.9 to officially supported versions.
- Type annotate
__enter__
/__exit__
/__aenter__
/__aexit__
in a way that supports subclasses ofClient
andAsyncClient
. (Pull #1336)
-
v0.15.5 Changes
October 01, 2020 -
v0.15.4 Changes
September 25, 2020 -
v0.15.3 Changes
September 24, 20200.15.3 (September 24th, 2020)
๐ Fixed
- ๐ Fixed connection leak in async client due to improper closing of response streams. (Pull #1316)
-
v0.15.2 Changes
September 23, 2020 -
v0.15.1 Changes
September 23, 20200.15.1 (September 23nd, 2020)
๐ Fixed
- ASGITransport now properly applies URL decoding to the
path
component, as-per the ASGI spec. (Pull #1307)
- ASGITransport now properly applies URL decoding to the