Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-httpcore2 for
openSUSE:Factory checked in at 2026-07-06 12:27:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-httpcore2 (Old)
and /work/SRC/openSUSE:Factory/.python-httpcore2.new.1982 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-httpcore2"
Mon Jul 6 12:27:17 2026 rev:2 rq:1362976 version:2.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-httpcore2/python-httpcore2.changes
2026-06-16 18:42:22.582206268 +0200
+++
/work/SRC/openSUSE:Factory/.python-httpcore2.new.1982/python-httpcore2.changes
2026-07-06 12:27:33.189440892 +0200
@@ -1,0 +2,6 @@
+Wed Jul 1 11:37:02 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.5.0:
+ * Propagate the timeout through the SOCKS5 handshake.
+
+-------------------------------------------------------------------
Old:
----
httpcore2-2.4.0.tar.gz
New:
----
httpcore2-2.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-httpcore2.spec ++++++
--- /var/tmp/diff_new_pack.Zmd9BL/_old 2026-07-06 12:27:34.557488340 +0200
+++ /var/tmp/diff_new_pack.Zmd9BL/_new 2026-07-06 12:27:34.561488479 +0200
@@ -17,7 +17,7 @@
Name: python-httpcore2
-Version: 2.4.0
+Version: 2.5.0
Release: 0
Summary: A minimal low-level HTTP client
License: BSD-3-Clause
++++++ httpcore2-2.4.0.tar.gz -> httpcore2-2.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore2-2.4.0/CHANGELOG.md
new/httpcore2-2.5.0/CHANGELOG.md
--- old/httpcore2-2.4.0/CHANGELOG.md 2020-02-02 01:00:00.000000000 +0100
+++ new/httpcore2-2.5.0/CHANGELOG.md 2020-02-02 01:00:00.000000000 +0100
@@ -4,6 +4,12 @@
The format is based on [Keep a
Changelog](https://keepachangelog.com/en/1.0.0/).
+## 2.5.0 (June 25th, 2026)
+
+### Fixed
+
+* Propagate the timeout through the SOCKS5 handshake.
([#1009](https://github.com/pydantic/httpx2/pull/1009))
+
## 2.4.0 (June 11th, 2026)
### Fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore2-2.4.0/PKG-INFO new/httpcore2-2.5.0/PKG-INFO
--- old/httpcore2-2.4.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/httpcore2-2.5.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: httpcore2
-Version: 2.4.0
+Version: 2.5.0
Summary: A minimal low-level HTTP client.
Project-URL: Changelog,
https://github.com/pydantic/httpx2/blob/main/src/httpcore2/CHANGELOG.md
Project-URL: Homepage, https://github.com/pydantic/httpx2
@@ -151,6 +151,12 @@
The format is based on [Keep a
Changelog](https://keepachangelog.com/en/1.0.0/).
+## 2.5.0 (June 25th, 2026)
+
+### Fixed
+
+* Propagate the timeout through the SOCKS5 handshake.
([#1009](https://github.com/pydantic/httpx2/pull/1009))
+
## 2.4.0 (June 11th, 2026)
### Fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore2-2.4.0/httpcore2/_async/socks_proxy.py
new/httpcore2-2.5.0/httpcore2/_async/socks_proxy.py
--- old/httpcore2-2.4.0/httpcore2/_async/socks_proxy.py 2020-02-02
01:00:00.000000000 +0100
+++ new/httpcore2-2.5.0/httpcore2/_async/socks_proxy.py 2020-02-02
01:00:00.000000000 +0100
@@ -45,7 +45,11 @@
host: bytes,
port: int,
auth: tuple[bytes, bytes] | None = None,
+ timeouts: dict[str, float | None] | None = None,
) -> None:
+ timeouts = timeouts or {}
+ write_timeout = timeouts.get("write", None)
+ read_timeout = timeouts.get("read", None)
conn = socksio.socks5.SOCKS5Connection()
# Auth method request
@@ -56,10 +60,10 @@
)
conn.send(socksio.socks5.SOCKS5AuthMethodsRequest([auth_method]))
outgoing_bytes = conn.data_to_send()
- await stream.write(outgoing_bytes)
+ await stream.write(outgoing_bytes, timeout=write_timeout)
# Auth method response
- incoming_bytes = await stream.read(max_bytes=4096)
+ incoming_bytes = await stream.read(max_bytes=4096, timeout=read_timeout)
response = conn.receive_data(incoming_bytes)
assert isinstance(response, socksio.socks5.SOCKS5AuthReply)
if response.method != auth_method:
@@ -73,10 +77,10 @@
username, password = auth
conn.send(socksio.socks5.SOCKS5UsernamePasswordRequest(username,
password))
outgoing_bytes = conn.data_to_send()
- await stream.write(outgoing_bytes)
+ await stream.write(outgoing_bytes, timeout=write_timeout)
# Username/password response
- incoming_bytes = await stream.read(max_bytes=4096)
+ incoming_bytes = await stream.read(max_bytes=4096,
timeout=read_timeout)
response = conn.receive_data(incoming_bytes)
assert isinstance(response, socksio.socks5.SOCKS5UsernamePasswordReply)
if not response.success:
@@ -85,10 +89,10 @@
# Connect request
conn.send(socksio.socks5.SOCKS5CommandRequest.from_address(socksio.socks5.SOCKS5Command.CONNECT,
(host, port)))
outgoing_bytes = conn.data_to_send()
- await stream.write(outgoing_bytes)
+ await stream.write(outgoing_bytes, timeout=write_timeout)
# Connect response
- incoming_bytes = await stream.read(max_bytes=4096)
+ incoming_bytes = await stream.read(max_bytes=4096, timeout=read_timeout)
response = conn.receive_data(incoming_bytes)
assert isinstance(response, socksio.socks5.SOCKS5Reply)
if response.reply_code != socksio.socks5.SOCKS5ReplyCode.SUCCEEDED:
@@ -229,6 +233,7 @@
"host": self._remote_origin.host.decode("ascii"),
"port": self._remote_origin.port,
"auth": self._proxy_auth,
+ "timeouts": timeouts,
}
async with Trace("setup_socks5_connection", logger,
request, kwargs) as trace:
await _init_socks5_connection(**kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore2-2.4.0/httpcore2/_sync/socks_proxy.py
new/httpcore2-2.5.0/httpcore2/_sync/socks_proxy.py
--- old/httpcore2-2.4.0/httpcore2/_sync/socks_proxy.py 2020-02-02
01:00:00.000000000 +0100
+++ new/httpcore2-2.5.0/httpcore2/_sync/socks_proxy.py 2020-02-02
01:00:00.000000000 +0100
@@ -45,7 +45,11 @@
host: bytes,
port: int,
auth: tuple[bytes, bytes] | None = None,
+ timeouts: dict[str, float | None] | None = None,
) -> None:
+ timeouts = timeouts or {}
+ write_timeout = timeouts.get("write", None)
+ read_timeout = timeouts.get("read", None)
conn = socksio.socks5.SOCKS5Connection()
# Auth method request
@@ -56,10 +60,10 @@
)
conn.send(socksio.socks5.SOCKS5AuthMethodsRequest([auth_method]))
outgoing_bytes = conn.data_to_send()
- stream.write(outgoing_bytes)
+ stream.write(outgoing_bytes, timeout=write_timeout)
# Auth method response
- incoming_bytes = stream.read(max_bytes=4096)
+ incoming_bytes = stream.read(max_bytes=4096, timeout=read_timeout)
response = conn.receive_data(incoming_bytes)
assert isinstance(response, socksio.socks5.SOCKS5AuthReply)
if response.method != auth_method:
@@ -73,10 +77,10 @@
username, password = auth
conn.send(socksio.socks5.SOCKS5UsernamePasswordRequest(username,
password))
outgoing_bytes = conn.data_to_send()
- stream.write(outgoing_bytes)
+ stream.write(outgoing_bytes, timeout=write_timeout)
# Username/password response
- incoming_bytes = stream.read(max_bytes=4096)
+ incoming_bytes = stream.read(max_bytes=4096, timeout=read_timeout)
response = conn.receive_data(incoming_bytes)
assert isinstance(response, socksio.socks5.SOCKS5UsernamePasswordReply)
if not response.success:
@@ -85,10 +89,10 @@
# Connect request
conn.send(socksio.socks5.SOCKS5CommandRequest.from_address(socksio.socks5.SOCKS5Command.CONNECT,
(host, port)))
outgoing_bytes = conn.data_to_send()
- stream.write(outgoing_bytes)
+ stream.write(outgoing_bytes, timeout=write_timeout)
# Connect response
- incoming_bytes = stream.read(max_bytes=4096)
+ incoming_bytes = stream.read(max_bytes=4096, timeout=read_timeout)
response = conn.receive_data(incoming_bytes)
assert isinstance(response, socksio.socks5.SOCKS5Reply)
if response.reply_code != socksio.socks5.SOCKS5ReplyCode.SUCCEEDED:
@@ -229,6 +233,7 @@
"host": self._remote_origin.host.decode("ascii"),
"port": self._remote_origin.port,
"auth": self._proxy_auth,
+ "timeouts": timeouts,
}
with Trace("setup_socks5_connection", logger, request,
kwargs) as trace:
_init_socks5_connection(**kwargs)