]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Version 0.18.0 (#1576) 0.18.0
authorTom Christie <tom@tomchristie.com>
Tue, 27 Apr 2021 14:20:22 +0000 (15:20 +0100)
committerGitHub <noreply@github.com>
Tue, 27 Apr 2021 14:20:22 +0000 (15:20 +0100)
* Version 0.18.0

CHANGELOG.md
README.md
docs/index.md
httpx/__version__.py

index fa4d61112adee29a7d7fbeb33cfb1385d4e7fcef..46384c596388e48dca4ce344477afbc53e51d06a 100644 (file)
@@ -4,22 +4,47 @@ All notable changes to this project will be documented in this file.
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
-## Master
+## 0.18.0 (27th April, 2021)
 
-The 0.18.x release series formalises our low-level Transport API, introducing the
-base classes `httpx.BaseTransport` and `httpx.AsyncBaseTransport`.
+The 0.18.x release series formalises our low-level Transport API, introducing the base classes `httpx.BaseTransport` and `httpx.AsyncBaseTransport`.
 
-See the "Writing custom transports" documentation and the `httpx.BaseTransport.handle_request()`
-docstring for more complete details on implementing custom transports.
+See the "[Writing custom transports](https://www.python-httpx.org/advanced/#writing-custom-transports)" documentation and the [`httpx.BaseTransport.handle_request()`](https://github.com/encode/httpx/blob/397aad98fdc8b7580a5fc3e88f1578b4302c6382/httpx/_transports/base.py#L77-L147) 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.
+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` or `httpx.AsyncBaseTransport`,
-  and should implement either the `handle_request` method or `handle_async_request` method.
-* The `response.ext` property and `Response(ext=...)` argument are now named `extensions`.
+  and should implement either the `handle_request` method or `handle_async_request` method. (Pull #1522, #1550)
+* The `response.ext` property and `Response(ext=...)` argument are now named `extensions`. (Pull #1522)
+* The recommendation to not use `data=<bytes|str|bytes (a)iterator>` in favour of `content=<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 named `httpx.StreamClosed`. (#1584)
+* The `httpx.QueryParams` model now presents an immutable interface. There is a discussion on [the design and motivation here](https://github.com/encode/httpx/discussions/1599). Use `client.params = client.params.merge(...)` instead of `client.params.update(...)`. The basic query manipulation methods are `query.set(...)`, `query.add(...)`, and `query.remove()`. (#1600)
+
+### Added
+
+* The `Request` and `Response` classes can now be serialized using pickle. (#1579)
+* Handle `data={"key": [None|int|float|bool]}` cases. (Pull #1539)
+* Support `httpx.URL(**kwargs)`, for example `httpx.URL(scheme="https", host="www.example.com", path="/')`, or `httpx.URL("https://www.example.com/", username="tom@gmail.com", password="123 456")`. (Pull #1601)
+* Support `url.copy_with(params=...)`. (Pull #1601)
+* Add `url.params` parameter, returning an immutable `QueryParams` 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 from `http` URLs and `:443` ports are stripped from `https` URLs. (Pull #1603)
+* The `URL.host` property returns unicode strings for internationalized domain names. The `URL.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)
 
 ## 0.17.1 (March 15th, 2021)
 
index d8251bd138192cc23d6e688a441a9bc28b5bc6ca..e85a0142c95574c155ba4e628097d9235c6ea0bb 100644 (file)
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@
 HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.
 
 **Note**: _HTTPX should be considered in beta. We believe we've got the public API to
-a stable point now, but would strongly recommend pinning your dependencies to the `0.17.*`
+a stable point now, but would strongly recommend pinning your dependencies to the `0.18.*`
 release, so that you're able to properly review [API changes between package updates](https://github.com/encode/httpx/blob/master/CHANGELOG.md). A 1.0 release is expected to be issued sometime in 2021._
 
 ---
index 109ee33088643fc6f581990d31d1716bab369897..8a41dca3b128b01e187cc86d6094e5a89969705c 100644 (file)
@@ -27,7 +27,7 @@ HTTPX is a fully featured HTTP client for Python 3, which provides sync and asyn
 !!! note
     HTTPX should currently be considered in beta.
 
-    We believe we've got the public API to a stable point now, but would strongly recommend pinning your dependencies to the `0.17.*` release, so that you're able to properly review [API changes between package updates](https://github.com/encode/httpx/blob/master/CHANGELOG.md).
+    We believe we've got the public API to a stable point now, but would strongly recommend pinning your dependencies to the `0.18.*` release, so that you're able to properly review [API changes between package updates](https://github.com/encode/httpx/blob/master/CHANGELOG.md).
 
     A 1.0 release is expected to be issued sometime in 2021.
 
index 90fae6b2fb6260fa1955209779124bd64c75ef44..b847686501740ec18ff4e3e086d087fa1b628605 100644 (file)
@@ -1,3 +1,3 @@
 __title__ = "httpx"
 __description__ = "A next generation HTTP client, for Python 3."
-__version__ = "0.17.1"
+__version__ = "0.18.0"