./www/py-httpx, The next generation HTTP client

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.16.1, Package name: py37-httpx-0.16.1, Maintainer: pkgsrc-users

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.


Required to run:
[devel/py-setuptools] [converters/py-chardet] [www/py-idna] [security/py-certifi] [lang/python37] [misc/py-sniffio] [www/py-rfc3986] [www/py-hstspreload] [www/py-httpcore]

Required to build:
[pkgtools/cwrappers]

Master sites:

SHA1: 9804e4db80f8f17f1738f32ca9f37b8d1114534c
RMD160: 813a0f826aebaab158255d06a434ceeeb743784d
Filesize: 81.302 KB

Version history: (Expand)


CVS history: (Expand)


   2020-10-13 13:14:43 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-httpx: updated to 0.16.1

0.16.1

Fixed
* Support literal IPv6 addresses in URLs.
* Force lowercase headers in ASGI scope dictionaries.

0.16.0

Changed
* Preserve HTTP header casing.
* Drop `response.next()` and `response.anext()` methods in favour of \ 
`response.next_request` attribute.
* Closed clients now raise a runtime error if attempting to send a request.

Added
* Add Python 3.9 to officially supported versions.
* Type annotate `__enter__`/`__exit__`/`__aenter__`/`__aexit__` in a way that \ 
supports subclasses of `Client` and `AsyncClient`.
   2020-10-02 09:42:53 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-httpx: updated to 0.15.5

0.15.5

Added
* Add `response.next_request`
   2020-10-01 08:51:32 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
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/ … da388e546e).
* 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.
   2020-06-03 16:21:26 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-httpx: updated to 0.13.3

0.13.3:

Fixed

* Include missing keepalive expiry configuration.
* Improved error message when URL redirect has a custom scheme.

0.13.2:

Fixed

* Include explicit "Content-Length: 0" on POST, PUT, PATCH if no \ 
request body is used.
* Add `http2` option to `httpx.Client`.
* Tighten up API typing in places.

0.13.1:

Fixed

* Fix pool options deprecation warning.
* Include `httpx.URLLib3ProxyTransport` in top-level API.

0.13.0:

This release switches to `httpcore` for all the internal networking, which means:

* We're using the same codebase for both our sync and async clients.
* HTTP/2 support is now available with the sync client.
* We no longer have a `urllib3` dependency for our sync client, although there \ 
is still an *optional* `URLLib3Transport` class.

It also means we've had to remove our UDS support, since maintaining that would \ 
have meant having to push back our work towards a 1.0 release, which isn't a \ 
trade-off we wanted to make.

We also now have [a public "Transport \ 
API"](https://www.python-httpx.org/advanced/# … transports), which you \ 
can use to implement custom transport implementations against. This formalises \ 
and replaces our previously private "Dispatch API".

Changed

* Use `httpcore` for underlying HTTP transport. Drop `urllib3` requirement.
* Rename pool limit options from `soft_limit`/`hard_limit` to \ 
`max_keepalive`/`max_connections`.
* The previous private "Dispatch API" has now been promoted to a \ 
public "Transport API". When customizing the transport use \ 
`transport=...`. The `ASGIDispatch` and `WSGIDispatch` class naming is \ 
deprecated in favour of `ASGITransport` and `WSGITransport`.

Added

* Added `URLLib3Transport` class for optional `urllib3` transport support.
* Streaming multipart uploads.
* Logging via HTTPCORE_LOG_LEVEL and HTTPX_LOG_LEVEL environment variables
and TRACE level logging.

Fixed

* Performance improvement in brotli decoder.
* Proper warning level of deprecation notice in `Response.stream` and `Response.raw`.
* Fix support for generator based WSGI apps.
* Reuse of connections on HTTP/2 in close concurrency situations.
* Honor HTTP/2 max concurrent streams settings
* Fix bytes support in multipart uploads.
* Improve typing support for `files=...`.

Removed

* Dropped support for `Client(uds=...)`
   2020-03-20 08:43:06 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-httpx: updated to 0.12.1

0.12.1:

Fixed
* Resolved packaging issue, where additional files were being included.
   2020-03-10 08:36:17 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-httpx: updated to 0.12.0

0.12.0:

The 0.12 release tightens up the API expectations for httpx by switching to \ 
private module names to enforce better clarity around public API.

All imports of httpx should import from the top-level package only, such as from \ 
httpx import Request, rather than importing from privately namespaced modules \ 
such as from httpx._models import Request.

Added
Support making response body available to auth classes with .requires_response_body.
Export NetworkError exception.
Add support for NO_PROXY environment variable.

Changed
Switched to private module names.
Drop redirect looping detection and the RedirectLoop exception, instead using \ 
TooManyRedirects.
Drop backend=... parameter on AsyncClient, in favour of always autodetecting \ 
trio/asyncio.

Fixed
Support basic auth credentials in proxy URLs.
Fix httpx.Proxy(url, mode="FORWARD_ONLY") configuration.
Fallback to setting headers as UTF-8 if no encoding is specified.
Close proxy dispatches classes on client close.
Support custom cert parameters even if verify=False.
Don't support invalid dict-of-dicts form data in data=....
   2020-01-20 12:50:48 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-httpx: updated to 0.11.1

0.11.1:
Fixed
* Fixed usage of `proxies=...` on `Client()`.
* Support both `zlib` and `deflate` style encodings on `Content-Encoding: deflate`.
* Fix for streaming a redirect response body with `allow_redirects=False`.
* Handle redirect with malformed Location headers missing host.
   2020-01-14 17:10:53 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
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`.