Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Let's push the 1.0 pre-release to a 0.20 version instead.
0.20.0 (13th October, 2021)
The 0.20.0 release adds an integrated command-line client, and also includes some design changes. The most notable of these is that redirect responses are no longer automatically followed, unless specifically requested.
This design decision prioritises a more explicit approach to redirects, in order to avoid code that unintentionally issues multiple requests as a result of misconfigured URLs.
For example, previously a client configured to send requests to
http://api.github.com/
would end up sending every API request twice, as each request would be redirected tohttps://api.github.com/
.If you do want auto-redirect behaviour, you can enable this either by configuring the client instance with
Client(follow_redirects=True)
, or on a per-request basis, with.get(..., follow_redirects=True)
.This change is a classic trade-off between convenience and precision, with no "right" answer. See discussion #1785 for more context.
The other major design change is an update to the Transport API, which is the low-level interface against which requests are sent. Previously this interface used only primitive datastructures, like so...
Now the interface is much simpler...
Changed
allow_redirects
flag is nowfollow_redirects
and defaults toFalse
.raise_for_status()
method will now raise an exception for any responses except those with 2xx status codes. Previously only 4xx and 5xx status codes would result in an exception.response = transport.handle_request(request)
.client.send()
method no longer accepts atimeout=...
argument, but theclient.build_request()
does. This required by the signature change of the Transport API. The request timeout configuration is now stored on the request instance, asrequest.extensions['timeout']
.Added
httpx
command-line client..is_informational
,.is_success
,.is_redirect
,.is_client_error
, and.is_server_error
properties for checking 1xx, 2xx, 3xx, 4xx, and 5xx response types. Note that the behaviour of.is_redirect
is slightly different in that it now returns True for all 3xx responses, in order to allow for a consistent set of properties onto the different HTTP status code types. Theresponse.has_redirect_location
location may be used to determine responses with properly formed URL redirects.Fixed
response.iter_bytes()
no longer raises a ValueError when called on a response with no content. (Pull Fixiter_bytes
with empty content. #1827)'wsgi.error'
configuration now defaults tosys.stderr
, and is corrected to be aTextIO
interface, not aBytesIO
interface. Additionally, the WSGITransport now accepts awsgi_error
confguration. (Pull BUG: wsgi.error should be TextIO, not BytesIO in WSGI transport #1828)