Merged
Conversation
Ousret
reviewed
Oct 14, 2021
| # Reference: https://github.com/encode/httpx/pull/1721#discussion_r661241588 | ||
| -e .[cli,http2,brotli] | ||
|
|
||
| charset-normalizer==2.0.6 |
Contributor
There was a problem hiding this comment.
I stumbled here after a quick lookup at the changelog.
What I would recommend you is to use more predictable source bytes for your tests.
>>> from charset_normalizer import detect
>>> k = "Bсеки човек има право на образование. Oбразованието!".encode("cp1251")
>>> detect(k)
{'encoding': 'windows-1251', 'language': 'Russian', 'confidence': 1.0}
>>> k = "Bсеки човек има право на образование. Oбразованието!".encode("koi8_r")
>>> detect(k)
{'encoding': 'KOI8-R', 'language': 'Russian', 'confidence': 1.0}
>>> k = "Bсеки човек има право на образование. Oбразованието!".encode("utf_8")
>>> detect(k)
{'encoding': 'utf-8', 'language': 'Russian', 'confidence': 1.0}
>>> k = "Bсеки човек има право на образование. Oбразованието!".encode("kz1048")
>>> detect(k)
{'encoding': 'windows-1251', 'language': 'Russian', 'confidence': 1.0}
>>> k = "Bсеки човек има право на образование. Oбразованието!".encode("ptcp154")
>>> detect(k)
{'encoding': 'windows-1251', 'language': 'Russian', 'confidence': 1.0}
>>> from charset_normalizer import from_bytes
>>> from_bytes(k).best().could_be_from_charset
['cp1251', 'kz1048', 'mac_cyrillic', 'ptcp154']More reliable than "Accented: Österreich abcdefghijklmnopqrstuzwxyz".
Hopefully, that will help. I can personally ensure that this case will not regress or mutate.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Let's push the 1.0 pre-release to a 0.20 version instead.
0.20.0 (13th October, 2021)
The 0.20.0 release adds an integrated command-line client, and also includes some design changes. The most notable of these is that redirect responses are no longer automatically followed, unless specifically requested.
This design decision prioritises a more explicit approach to redirects, in order to avoid code that unintentionally issues multiple requests as a result of misconfigured URLs.
For example, previously a client configured to send requests to
http://api.github.com/would end up sending every API request twice, as each request would be redirected tohttps://api.github.com/.If you do want auto-redirect behaviour, you can enable this either by configuring the client instance with
Client(follow_redirects=True), or on a per-request basis, with.get(..., follow_redirects=True).This change is a classic trade-off between convenience and precision, with no "right" answer. See discussion #1785 for more context.
The other major design change is an update to the Transport API, which is the low-level interface against which requests are sent. Previously this interface used only primitive datastructures, like so...
Now the interface is much simpler...
Changed
allow_redirectsflag is nowfollow_redirectsand defaults toFalse.raise_for_status()method will now raise an exception for any responses except those with 2xx status codes. Previously only 4xx and 5xx status codes would result in an exception.response = transport.handle_request(request).client.send()method no longer accepts atimeout=...argument, but theclient.build_request()does. This required by the signature change of the Transport API. The request timeout configuration is now stored on the request instance, asrequest.extensions['timeout'].Added
httpxcommand-line client..is_informational,.is_success,.is_redirect,.is_client_error, and.is_server_errorproperties for checking 1xx, 2xx, 3xx, 4xx, and 5xx response types. Note that the behaviour of.is_redirectis slightly different in that it now returns True for all 3xx responses, in order to allow for a consistent set of properties onto the different HTTP status code types. Theresponse.has_redirect_locationlocation may be used to determine responses with properly formed URL redirects.Fixed
response.iter_bytes()no longer raises a ValueError when called on a response with no content. (Pull Fixiter_byteswith empty content. #1827)'wsgi.error'configuration now defaults tosys.stderr, and is corrected to be aTextIOinterface, not aBytesIOinterface. Additionally, the WSGITransport now accepts awsgi_errorconfguration. (Pull BUG: wsgi.error should be TextIO, not BytesIO in WSGI transport #1828)