Log message:
py-httpx: updated to 0.15.4
0.15.4
Added
* Support direct comparisons between `Headers` and dicts or lists of two-tuples. \
Eg. `assert response.headers == {"Content-Length": 24}`
Fixed
* Fix automatic `.read()` when `Response` instances are created with \
`content=<str>`
0.15.3
Fixed
* Fixed connection leak in async client due to improper closing of response streams.
0.15.2
Fixed
* Fixed `response.elapsed` property.
* Fixed client authentication interaction with `.stream()`.
0.15.1
Fixed
* ASGITransport now properly applies URL decoding to the `path` component, \
as-per the ASGI spec.
0.15.0
Added
* Added support for curio. (Pull https://github.com/encode/httpcore/pull/168)
* Added support for event hooks.
* Added support for authentication flows which require either sync or async I/O.
* Added support for monitoring download progress with \
`response.num_bytes_downloaded`.
* Added `Request(content=...)` for byte content, instead of overloading \
`Request(data=...)`
* Added support for all URL components as parameter names when using \
`url.copy_with(...)`.
* Neater split between automatically populated headers on `Request` instances, \
vs default `client.headers`.
* Unclosed `AsyncClient` instances will now raise warnings if garbage collected.
* Support `Response(content=..., text=..., html=..., json=...)` for creating \
usable response instances in code.
* Support instantiating requests from the low-level transport API.
* Raise errors on invalid URL types.
Changed
* Cleaned up expected behaviour for URL escaping. `url.path` is now URL escaped.
* Cleaned up expected behaviour for bytes vs str in URL components. \
`url.userinfo` and `url.query` are not URL escaped, and so return bytes.
* Drop `url.authority` property in favour of `url.netloc`, since \
"authority" was semantically incorrect.
* Drop `url.full_path` property in favour of `url.raw_path`, for better \
consistency with other parts of the API.
* No longer use the `chardet` library for auto-detecting charsets, instead \
defaulting to a simpler approach when no charset is specified.
Fixed
* Swapped ordering of redirects and authentication flow.
* `.netrc` lookups should use host, not host+port.
Removed
* The `URLLib3Transport` class no longer exists. We've published it instead as \
an example of [a custom transport \
class](https://gist.github.com/florimondmanca/d56764d78d748eb9f73165da388e546e).
* Drop `request.timer` attribute, which was being used internally to set \
`response.elapsed`.
* Drop `response.decoder` attribute, which was being used internally.
* `Request.prepare()` is now a private method.
* The `Headers.getlist()` method had previously been deprecated in favour of \
`Headers.get_list()`. It is now fully removed.
* The `QueryParams.getlist()` method had previously been deprecated in favour of \
`QueryParams.get_list()`. It is now fully removed.
* The `URL.is_ssl` property had previously been deprecated in favour of \
`URL.scheme == "https"`. It is now fully removed.
* The `httpx.PoolLimits` class had previously been deprecated in favour of \
`httpx.Limits`. It is now fully removed.
* The `max_keepalive` setting had previously been deprecated in favour of the \
more explicit `max_keepalive_connections`. It is now fully removed.
* The verbose `httpx.Timeout(5.0, connect_timeout=60.0)` style had previously \
been deprecated in favour of `httpx.Timeout(5.0, connect=60.0)`. It is now fully \
removed.
* Support for instantiating a timeout config missing some defaults, such as \
`httpx.Timeout(connect=60.0)`, had previously been deprecated in favour of \
enforcing a more explicit style, such as `httpx.Timeout(5.0, connect=60.0)`. \
This is now strictly enforced.
0.14.3
Added
* `http.Response()` may now be instantiated without a `request=...` parameter. \
Useful for some unit testing cases.
* Add `103 Early Hints` and `425 Too Early` status codes.
Fixed
* `DigestAuth` now handles responses that include multiple 'WWW-Authenticate' \
headers.
* Call into transport `__enter__`/`__exit__` or `__aenter__`/`__aexit__` when \
client is used in a context manager style.
0.14.2
Added
* Support `client.get(..., auth=None)` to bypass the default authentication on a \
clients.
* Support `client.auth = ...` property setter.
* Support `httpx.get(..., proxies=...)` on top-level request functions.
* Display instances with nicer import styles. (Eg. <httpx.ReadTimeout ...>)
* Support `cookies=[(key, value)]` list-of-two-tuples style usage.
Fixed
* Ensure that automatically included headers on a request may be modified.
* Allow explicit `Content-Length` header on streaming requests.
* Handle URL quoted usernames and passwords properly.
* Use more consistent default for `HEAD` requests, setting `allow_redirects=True`.
* If a transport error occurs while streaming the response, raise an `httpx` \
exception, not the underlying `httpcore` exception.
* Include the underlying `httpcore` traceback, when transport exceptions occur.
0.14.1
Added
* The `httpx.URL(...)` class now raises `httpx.InvalidURL` on invalid URLs, \
rather than exposing the underlying `rfc3986` exception. If a redirect response \
includes an invalid 'Location' header, then a `RemoteProtocolError` exception is \
raised, which will be associated with the request that caused it.
Fixed
* Handling multiple `Set-Cookie` headers became broken in the 0.14.0 release, \
and is now resolved.
0.14.0
The 0.14 release includes a range of improvements to the public API, intended on \
preparing for our upcoming 1.0 release.
* Our HTTP/2 support is now fully optional. **You now need to use `pip install \
httpx[http2]` if you want to include the HTTP/2 dependancies.**
* Our HSTS support has now been removed. Rewriting URLs from `http` to `https` \
if the host is on the HSTS list can be beneficial in avoiding roundtrips to \
incorrectly formed URLs, but on balance we've decided to remove this feature, on \
the principle of least surprise. Most programmatic clients do not include HSTS \
support, and for now we're opting to remove our support for it.
* Our exception hierarchy has been overhauled. Most users will want to stick \
with their existing `httpx.HTTPError` usage, but we've got a clearer overall \
structure now. See https://www.python-httpx.org/exceptions/ for more details.
When upgrading you should be aware of the following public API changes. Note \
that deprecated usages will currently continue to function, but will issue \
warnings.
* You should now use `httpx.codes` consistently instead of `httpx.StatusCodes`.
* Usage of `httpx.Timeout()` should now always include an explicit default. Eg. \
`httpx.Timeout(None, pool=5.0)`.
* When using `httpx.Timeout()`, we now have more concisely named keyword \
arguments. Eg. `read=5.0`, instead of `read_timeout=5.0`.
* Use `httpx.Limits()` instead of `httpx.PoolLimits()`, and `limits=...` instead \
of `pool_limits=...`.
* The `httpx.Limits(max_keepalive=...)` argument is now deprecated in favour of \
a more explicit `httpx.Limits(max_keepalive_connections=...)`.
* Keys used with `Client(proxies={...})` should now be in the style of \
`{"http://": ...}`, rather than `{"http": ...}`.
* The multidict methods `Headers.getlist()` and `QueryParams.getlist()` are \
deprecated in favour of more consistent `.get_list()` variants.
* The `URL.is_ssl` property is deprecated in favour of `URL.scheme == \
"https"`.
* The `URL.join(relative_url=...)` method is now `URL.join(url=...)`. This \
change does not support warnings for the deprecated usage style.
One notable aspect of the 0.14.0 release is that it tightens up the public API \
for `httpx`, by ensuring that several internal attributes and methods have now \
become strictly private.
The following previously had nominally public names on the client, but were all \
undocumented and intended solely for internal usage. They are all now replaced \
with underscored names, and should not be relied on or accessed.
These changes should not affect users who have been working from the `httpx` \
documentation.
* `.merge_url()`, `.merge_headers()`, `.merge_cookies()`, `.merge_queryparams()`
* `.build_auth()`, `.build_redirect_request()`
* `.redirect_method()`, `.redirect_url()`, `.redirect_headers()`, \
`.redirect_stream()`
* `.send_handling_redirects()`, `.send_handling_auth()`, `.send_single_request()`
* `.init_transport()`, `.init_proxy_transport()`
* `.proxies`, `.transport`, `.netrc`, `.get_proxy_map()`
Some areas of API which were already on the deprecation path, and were raising \
warnings or errors in 0.13.x have now been escalated to being fully removed.
* Drop `ASGIDispatch`, `WSGIDispatch`, which have been replaced by \
`ASGITransport`, `WSGITransport`.
* Drop `dispatch=...`` on client, which has been replaced by `transport=...``
* Drop `soft_limit`, `hard_limit`, which have been replaced by `max_keepalive` \
and `max_connections`.
* Drop `Response.stream` and` `Response.raw`, which have been replaced by \
``.aiter_bytes` and `.aiter_raw`.
* Drop `proxies=<transport instance>` in favor of `proxies=httpx.Proxy(...)`.
Added
* Added dedicated exception class `httpx.HTTPStatusError` for \
`.raise_for_status()` exceptions.
* Added `httpx.create_ssl_context()` helper function.
* Support for proxy exlcusions like \
`proxies={"https://www.example.com": None}`.
* Support `QueryParams(None)` and `client.params = None`.
Changed
* Use `httpx.codes` consistently in favour of `httpx.StatusCodes` which is \
placed into deprecation.
* Usage of `httpx.Timeout()` should now always include an explicit default. Eg. \
`httpx.Timeout(None, pool=5.0)`.
* Switch to more concise `httpx.Timeout()` keyword arguments. Eg. `read=5.0`, \
instead of `read_timeout=5.0`.
* Use `httpx.Limits()` instead of `httpx.PoolLimits()`, and `limits=...` instead \
of `pool_limits=...`.
* Keys used with `Client(proxies={...})` should now be in the style of \
`{"http://": ...}`, rather than `{"http": ...}`.
* The multidict methods `Headers.getlist` and `QueryParams.getlist` are \
deprecated in favour of more consistent `.get_list()` variants.
* `URL.port` becomes `Optional[int]`. Now only returns a port if one is \
explicitly included in the URL string.
* The `URL(..., allow_relative=[bool])` parameter no longer exists. All URL \
instances may be relative.
* Drop unnecessary `url.full_path = ...` property setter.
* The `URL.join(relative_url=...)` method is now `URL.join(url=...)`.
* The `URL.is_ssl` property is deprecated in favour of `URL.scheme == \
"https"`.
Fixed
* Add missing `Response.next()` method.
* Ensure all exception classes are exposed as public API.
* Support multiple items with an identical field name in multipart encodings.
* Skip HSTS preloading on single-label domains.
* Fixes for `Response.iter_lines()`.
* Ignore permission errors when accessing `.netrc` files.
* Allow bare hostnames in `HTTP_PROXY` etc... environment variables.
* Settings `app=...` or `transport=...` bypasses any environment based proxy \
defaults.
* Fix handling of `.base_url` when a path component is included in the base URL.
|
Log message:
py-httpx: updated to 0.11.0
0.11.0:
The 0.11 release reintroduces our sync support, so that `httpx` now supports \
both a standard thread-concurrency API, and an async API.
Existing async `httpx` users that are upgrading to 0.11 should ensure that:
* Async codebases should always use a client instance to make requests, instead \
of the top-level API.
* The async client is named as `httpx.AsyncClient()`, instead of `httpx.Client()`.
* When instantiating proxy configurations use the `httpx.Proxy()` class, instead \
of the previous `httpx.HTTPProxy()`. This new configuration class works for \
configuring both sync and async clients.
We believe the API is now pretty much stable, and are aiming for a 1.0 release \
sometime on or before April 2020.
Changed
- Top level API such as `httpx.get(url, ...)`, `httpx.post(url, ...)`, \
`httpx.request(method, url, ...)` becomes synchronous.
- Added `httpx.Client()` for synchronous clients, with `httpx.AsyncClient` being \
used for async clients.
- Switched to `proxies=httpx.Proxy(...)` for proxy configuration.
- Network connection errors are wrapped in `httpx.NetworkError`, rather than \
exposing lower-level exception types directly.
Removed
- The `request.url.origin` property and `httpx.Origin` class are no longer available.
- The per-request `cert`, `verify`, and `trust_env` arguments are escalated from \
raising errors if used, to no longer being available. These arguments should be \
used on a per-client instance instead, or in the top-level API.
- The `stream` argument has escalated from raising an error when used, to no \
longer being available. Use the `client.stream(...)` or `httpx.stream()` \
streaming API instead.
Fixed
- Redirect loop detection matches against `(method, url)` rather than `url`.
|