Packaging dependancy tweaks (#1206)

* Remove idna and add brotli to extras

* Update dependency docs

* Update BrotliDecoder error message

* Add nocover

Co-authored-by: Tom Christie <tom@tomchristie.com>
This commit is contained in:
Joe 2020-08-21 19:30:57 +08:00 committed by GitHub
parent 19515e8a8b
commit 15c1e42c20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 8 deletions

View File

@ -119,8 +119,8 @@ The HTTPX project relies on these excellent libraries:
* `h2` - HTTP/2 support. *(Optional)*
* `certifi` - SSL certificates.
* `chardet` - Fallback auto-detection for response encoding.
* `idna` - Internationalized domain name support.
* `rfc3986` - URL parsing & normalization.
* `idna` - Internationalized domain name support.
* `sniffio` - Async library autodetection.
* `urllib3` - Support for the `httpx.URLLib3Transport` class. *(Optional)*
* `brotlipy` - Decoding for "brotli" compressed responses. *(Optional)*

View File

@ -108,11 +108,11 @@ The HTTPX project relies on these excellent libraries:
* `httpcore` - The underlying transport implementation for `httpx`.
* `h11` - HTTP/1.1 support.
* `h2` - HTTP/2 support.
* `h2` - HTTP/2 support. *(Optional)*
* `certifi` - SSL certificates.
* `chardet` - Fallback auto-detection for response encoding.
* `idna` - Internationalized domain name support.
* `rfc3986` - URL parsing & normalization.
* `idna` - Internationalized domain name support.
* `sniffio` - Async library autodetection.
* `urllib3` - Support for the `httpx.URLLib3Transport` class. *(Optional)*
* `brotlipy` - Decoding for "brotli" compressed responses. *(Optional)*
@ -135,6 +135,12 @@ Or, to include the optional HTTP/2 support, use:
$ pip install httpx[http2]
```
To include the optional brotli decoder support, use:
```shell
$ pip install httpx[brotli]
```
HTTPX requires Python 3.6+
[sync-support]: https://github.com/encode/httpx/issues/572

View File

@ -108,9 +108,13 @@ class BrotliDecoder(Decoder):
"""
def __init__(self, request: "Request") -> None:
assert (
brotli is not None
), "The 'brotlipy' or 'brotli' library must be installed to use 'BrotliDecoder'"
if brotli is None: # pragma: nocover
raise ImportError(
"Using 'BrotliDecoder', but the 'brotlipy' or 'brotli' library "
"is not installed."
"Make sure to install httpx using `pip install httpx[brotli]`."
) from None
self.request = request
self.decompressor = brotli.Decompressor()
self.seen_data = False

View File

@ -58,12 +58,12 @@ setup(
"certifi",
"sniffio",
"chardet==3.*",
"idna==2.*",
"rfc3986>=1.3,<2",
"rfc3986[idna2008]>=1.3,<2",
"httpcore==0.10.*",
],
extras_require={
"http2": "h2==3.*",
"brotli": "brotlipy==0.7.*",
},
classifiers=[
"Development Status :: 4 - Beta",