Skip to content

Commit

Permalink
Packaging dependancy tweaks (#1206)
Browse files Browse the repository at this point in the history
* Remove idna and add brotli to extras

* Update dependency docs

* Update BrotliDecoder error message

* Add nocover

Co-authored-by: Tom Christie <tom@tomchristie.com>
  • Loading branch information
j178 and tomchristie committed Aug 21, 2020
1 parent 19515e8 commit 15c1e42
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 8 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)*
Expand Down
10 changes: 8 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)*
Expand All @@ -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
10 changes: 7 additions & 3 deletions httpx/_decoders.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@ def get_packages(package):
"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",
Expand Down

0 comments on commit 15c1e42

Please sign in to comment.