Releases: jawah/urllib3.future
Version 2.4.901
2.4.901 (2023-12-31)
- Fixed an issue where a stateless resolver (e.g. null resolver, in-memory resolver, ...) could not be recycled.
- Fixed an issue where one would attempt to close a resolver multiple times.
Version 2.4.900
2.4.900 (2023-12-30)
-
Added issuer certificate extraction from SSLSocket with native calls with Python 3.10+ in
ConnectionInfo
. -
Added support for DNS over TLS, DNS over HTTPS, DNS over QUIC, DNS over UDP, and local hosts-like DNS.
PoolManager
, andHTTPPoolManager
constructor now expose an additional keyword argument,resolver=...
. You can assign to it one of the presented protocols. Also, you may chain a list of resolvers, each can be limited to a list of host-pattern or not. The default is the system DNS. Our thread-safety promise covers this new feature.You can now do the following:
PoolManage(resolver="doh://dns.google")
for example. Please take a look at the official documentation to learn about the full capabilities. -
Support for SOCKS proxies is now provided by
python-socks
instead ofPySocks
due to being largely unmaintained within a reasonable period. This change is made completely transparent. -
Added details in
ConnectionInfo
about detailed timings and other details.
established_latency
is a timedelta that represents the amount of time consumed to get an ESTABLISHED network link.
resolution_latency
is a timedelta that represents the amount of time consumed for the hostname resolution.
tls_handshake_latency
is a timedelta that represents the amount of time consumed for the TLS handshake.
request_sent_latency
is a timedelta that represents the amount of time consumed to encode and send the whole request through the socket. -
Fixed a rare thread safety issue when using at least one HTTP/3 multiplexed connection.
-
Deprecated function
util.connection.create_connection(..)
in favor of newly addedcontrib.resolver
that will host from now on that function withinBaseResolver
as a method. Users are encouraged to migrate as soon as possible. -
Support for preemptively negotiating HTTP/3 over QUIC based on RFC 9460 via an HTTPS DNS record.
-
Added support for enforcing IPv6, and/or IPv4 using the keyword parameter
socket_family
that can be provided in
PoolManager
,HTTP(S)ConnectionPool
andHTTP(S)Connection
. The three accepted values aresocket.AF_UNSPEC
socket.AF_INET
, andsocket.AF_INET6
. Respectively, allow all, ipv4 only, and ipv6 only. Anything else will raise
ValueError.
Version 2.3.902
2.3.902 (2023-12-08)
- Fixed an issue where specifying
cert_reqs=ssl.CERT_NONE
orassert_hostname
was ignored when using HTTP/3 over QUIC.
Version 2.3.901
2.3.901 (2023-11-26)
- Small performance improvement while in HTTP/1.1
- Any string passed down to the body will enforce a default
Content-Type: text/plain; charset=utf-8
for safety, unless
you specify aContent-Type
header yourself. Thecharset
parameter will always be set toutf-8
.
It is recommended that you passbytes
instead of a plain string. If a conflicting charset has been set that
does not refer to utf-8, a warning will be raised. - Added callable argument in
urlopen
, andrequest
namedon_upload_body
that enables you to track
body upload progress for a single request. It takes 4 positional arguments, namely:
(total_sent: int, total_to_be_sent: int | None, is_completed: bool, any_error: bool)
total_to_be_sent may be set to None if we're unable to know in advance the total size (blind iterator/generator). - Fixed a rare case where
ProtocolError
was raised instead of expectedIncompleteRead
exception. - Improved HTTP/3 overall performance.
- Changed the default max connection per host for (http, https) pools managed by
PoolManager
.
If thePoolManager
is instantiated withnum_pools=10
, each (managed) subsequent pool will havemaxsize=10
. - Improved performance in a multithreading context while using many multiplexed connections.
- Changed the default max saturated multiplexed connections to 64 as the minimum.
Now a warning will be fired if you reach the maximum capacity of stored saturated multiplexed connections.
Version 2.3.900
2.3.900 (2023-11-18)
- Disabled unsafe renegotiation option with TLS by default where applicable.
- Added fallback package
urllib3_future
in addition tourllib3
. This became increasingly needed as a significant number of projects requireurllib3
and accidentally override this fork.
Version 2.2.907
2.2.907 (2023-11-11)
- Reverted relying on
qh3
to dynamically retrieve the max concurrent streams allowed before connection saturation.
Version 2.2.906
2.2.906 (2023-11-11)
- Bumped minimum requirement for
qh3
to version 0.14.0 in order to drop private calls incontrib.hface.protocols._qh3
. - Cache the last 1024
parse_url
function calls as it is costly. - Fixed incomplete flow control window checks while sending data in HTTP/2.
- Fixed unexpected BrokenPipeError exception in a rare edge case.
- Changed behavior for efficiency around
socket.recv
to pullconn.blocksize
bytes regardless ofResponse.read(amt=...)
.
Version 2.2.905
2.2.905 (2023-11-08)
- Fixed loss of a QUIC connection due to an inappropriate check in
conn.is_connected
. - Separate saturated (multiplexed) connections from the main pool to a distinct one.
Version 2.2.904
2.2.904 (2023-11-06)
- Fixed concurrent/multiplexed request overflow in a full connection pool.
- Fixed connection close that had in-flight request (in multiplexed mode), the connection appeared as not idle on clean reuse.
Version 2.2.903
2.2.903 (2023-11-06)
- Improved overall performances in HTTP/2, and HTTP/3, with or without multiplexed.