This adds support for zstd decoding using the python package zstandard.
This is similar to how it is implemented in urllib3. I also chose the
optional installation option httpx[zstd] to mimic the same option in
urllib3.
zstd decoding is similar to brotli, but in benchmarks it is supposed to
be even faster. The zstd compression is described in RFC 8878.
See https://github.com/encode/httpx/discussions/1986
Co-authored-by: Kamil Monicz <kamil@monicz.dev>
* Drop RawURL
* First pass at adding urlparse
* Update urlparse
* Add urlparse
* Add urlparse
* Unicode non-printables can be valid in IDNA hostnames
* Update _urlparse.py docstring
* Linting
* Trim away ununsed codepaths
* Tweaks for path validation depending on scheme and authority presence
* Minor cleanups
* Minor cleanups
* full_path -> raw_path, forr internal consistency
* Linting fixes
* Drop rfc3986 dependency
* Add test for #1833
* Linting
* Drop 'rfc3986' dependancy from README and docs homepage
Co-authored-by: Thomas Grainger <tagrain@gmail.com>
* Add Response(..., default_encoding=...)
* Add tests for Response(..., default_encoding=...)
* Add Client(..., default_encoding=...)
* Switch default encoding to 'utf-8' instead of 'autodetect'
* Make charset_normalizer an optional dependancy, not a mandatory one.
* Documentation
* Use callable for default_encoding
* Update tests for new charset autodetection API
* Update docs for new charset autodetection API
* Update requirements
* Drop charset_normalizer from requirements
* Add cli support
* Add setup.py
* Import main to 'httpx.main'
* Add 'cli' to requirements
* Add tests for command-line client
* Drop most CLI tests
* Add test_json
* Add test_redirects
* Coverage exclusion over _main.py in order to test more clearly
* Black formatting
* Add test_follow_redirects
* Add test_post, test_verbose, test_auth
* Add test_errors
* Remove test_errors
* Add test_download
* Change test_errors - perhaps the empty host header was causing the socket error?
* Update test_errors to not break socket
* Update docs
* Update version to 1.0.0.beta0
* Tweak CHANGELOG
* Fix up images in README
* Tweak images in README
* Update README
* Use either brotli (recommended for CPython) or brotlicffi (Recommended for PyPy and others)
* Add comments in places where we switch behaviour depending on brotli/brotlicffi
Co-authored-by: Florimond Manca <florimond.manca@gmail.com>
* Drop urllib3 in favor of public gist
* Drop urllib3 coverage omit
* Drop recommendation to use urllib3 transport during Requests migration
* Add urllib3-transport to 3p pkgs
* Drop urllib3 from dependencies list in README / docs home page
Co-authored-by: Tom Christie <tom@tomchristie.com>
* Adjust 1.0 expectations.
Not sure why I thought saying "expected September 2020" was a good idea.
Like *maybe* that'll happen, but no problem with us taking our time if there's areas we want to be really firm about first. *Eg finer details in the Transport API*.
* Update index.md
* Version 0.14.0
* Update CHANGELOG
* Update CHANGELOG.md
Co-authored-by: Stephen Brown II <Stephen.Brown2@gmail.com>
* Update CHANGELOG
* max_keepalive_connections
* Add deprecation test
* Update CHANGELOG.md
* Undate dependency pin callout
* Update expected 1.0 release date
Co-authored-by: Stephen Brown II <Stephen.Brown2@gmail.com>
* Version 0.13
* Update docs to 0.13 as the latest
* Whitespacing tweak
* More explicit notes about transport API renamings
* Update changelog
Co-authored-by: florimondmanca <florimond.manca@gmail.com>
* Version 0.10.0
* Update CHANGELOG.md
Co-Authored-By: Florimond Manca <florimond.manca@gmail.com>
* Include changelog for 'response.request is no longer optional'.
* Add response.elapsed note to changelog
* Also ref original PR for response.elapsed behavior
Co-authored-by: Florimond Manca <florimond.manca@gmail.com>