This is the first preview for the v3.0 release.
It is not ready for production. We are close!
3.0.0b0 (2023-09-21)
Removed
- Property
apparent_encoding
in favor of a discrete internal inference. - Support for the legacy
chardet
detector in case it was present in environment.
Extrachardet_on_py3
is now unavailable. - requests.compat no longer hold reference to chardet.
- Deprecated
requests.packages
that was meant to avoid breakage from people importingurllib3
orchardet
within this package.
They were vendored in early versions of Requests. A long time ago. - Deprecated function
get_encodings_from_content
from utils. - Deprecated function
get_unicode_from_response
from utils. - BasicAuth middleware no-longer support anything else than
bytes
orstr
for username and password. requests.compat
is stripped of every reference that no longer vary between supported interpreter version.- Charset fall back ISO-8859-1 when content-type is text and no charset was specified.
- Main function
get
,post
,put
,patch
,delete
, andhead
no longer accept kwargs. They have a fixed list of typed argument.
It is no longer possible to specify non-supported additional keyword argument from aSession
instance or directly throughrequests.api
functions.
e.g. functiondelete
no-longer acceptjson
, orfiles
arguments. as per RFCs specifications. You can still override this behavior through therequest
function. - Mixin classes
RequestEncodingMixin
, andRequestHooksMixin
due to OOP violations. Now deported directly into child classes. - Function
unicode_is_ascii
as it is part of the stablestr
stdlib on Python 3 or greater. - Alias function
session
forSession
context manager that was kept for BC reasons since the v1. - pyOpenSSL/urllib3 injection in case built-in ssl module does not have SNI support as it is not the case anymore for every supported interpreters.
- Constant
DEFAULT_CA_BUNDLE_PATH
, and submodulecerts
due to droppingcertifi
. - Function
extract_zipped_paths
because rendered useless as it was made to handle an edge case wherecertifi
is "zipped". - Extra
security
when installing this package. It was previously emptied in the previous major.
Changed
- Calling the method
json
fromResponse
when no encoding was provided no longer relies on internal encoding inference.
We fall back oncharset-normalizer
with a limited set of charsets allowed (UTF-8/16/32 or ASCII). - No longer will the
text
method fromResponse
return str if content cannot be decoded. It returns None instead. - If specified charset in content-type does not exist (LookupError) the
text
method fromResponse
will rely on charset detection. - If specified charset in content-type is not made for text decoding (e.g. base64), the
text
method fromResponse
returns None. - With above four changes, the
json
method will raiseRequestsJSONDecodeError
when the payload (body) cannot be decoded. - Passing invalid
files
description no longer just skip invalid entries, it raisesValueError
from now on. - Non-str HTTP-Verb are refused.
- Passing
files
with minimal description (meaning no tuple but just the fp) no longer guess its name whenfp.name
returns bytes. - No longer will the default timeout be unset, thus making you waiting indefinitely.
Functionsget
,head
, andoptions
ships with a default of 30 seconds.
Thenput
,post
,patch
anddelete
uses a default of 120 seconds.
Finally, therequest
function also have 120 seconds. - Basic authorization username and password are now encoded using utf-8 instead of latin-1 prior to being base64 encoded.
Added
- Static type annotations thorough the whole package.
cert
argument for client authentication with certificate can now pass the password/passphrase using a 3-values tuple (cert, key, password).
The three parameters in the tuple must be of typestr
.verify
argument behavior has been extended and now accept your CA bundle asstr
instead of a path. It also accepts your CA bundle asbytes
directly.
This helps when you do not have access to the fs.- Operating system truststore will be used instead of
certifi
. Root CAs are automatically grabbed from your computer configuration.
Fixed
- An invalid content-type definition would cause the charset to be evaluated to
True
, thus making the program crash. - Given
proxies
could be mutated when environment proxies were evaluated and injected. This package should not modify your inputs.
For context see psf#6118 - A server could specify a
Location
header that does not comply with HTTP specifications and could lead to an unexpected exception.
We try to fall back to Unicode decoding if the typical and expected Latin-1 would fail. If that fails too, a proper exception is raised.
For context see psf#6026