Skip to content

Commit 94162e1

Browse files
adamtheturtleclaude
andcommitted
Deduplicate httpx Timeout construction with match helper
Extract _httpx_timeout() helper using match/case to build httpx.Timeout, replacing duplicated isinstance branches in HTTPXTransport and AsyncHTTPXTransport. Closes #2960 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0cfd5a6 commit 94162e1

1 file changed

Lines changed: 24 additions & 30 deletions

File tree

src/vws/transports.py

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,28 @@
1010
from vws.response import Response
1111

1212

13+
@beartype(conf=BeartypeConf(is_pep484_tower=True))
14+
def _httpx_timeout(
15+
request_timeout: float | tuple[float, float],
16+
) -> httpx.Timeout:
17+
"""Build an ``httpx.Timeout`` from a request timeout value."""
18+
match request_timeout:
19+
case (connect, read):
20+
return httpx.Timeout(
21+
connect=connect,
22+
read=read,
23+
write=None,
24+
pool=None,
25+
)
26+
case float() | int() as timeout:
27+
return httpx.Timeout(
28+
connect=timeout,
29+
read=timeout,
30+
write=None,
31+
pool=None,
32+
)
33+
34+
1335
@runtime_checkable
1436
class Transport(Protocol):
1537
"""Protocol for HTTP transports used by VWS clients.
@@ -149,21 +171,7 @@ def __call__(
149171
Returns:
150172
A Response populated from the httpx response.
151173
"""
152-
if isinstance(request_timeout, tuple):
153-
connect_timeout, read_timeout = request_timeout
154-
httpx_timeout = httpx.Timeout(
155-
connect=connect_timeout,
156-
read=read_timeout,
157-
write=None,
158-
pool=None,
159-
)
160-
else:
161-
httpx_timeout = httpx.Timeout(
162-
connect=request_timeout,
163-
read=request_timeout,
164-
write=None,
165-
pool=None,
166-
)
174+
httpx_timeout = _httpx_timeout(request_timeout=request_timeout)
167175

168176
httpx_response = self._client.request(
169177
method=method,
@@ -272,21 +280,7 @@ async def __call__(
272280
Returns:
273281
A Response populated from the httpx response.
274282
"""
275-
if isinstance(request_timeout, tuple):
276-
connect_timeout, read_timeout = request_timeout
277-
httpx_timeout = httpx.Timeout(
278-
connect=connect_timeout,
279-
read=read_timeout,
280-
write=None,
281-
pool=None,
282-
)
283-
else:
284-
httpx_timeout = httpx.Timeout(
285-
connect=request_timeout,
286-
read=request_timeout,
287-
write=None,
288-
pool=None,
289-
)
283+
httpx_timeout = _httpx_timeout(request_timeout=request_timeout)
290284

291285
httpx_response = await self._client.request(
292286
method=method,

0 commit comments

Comments
 (0)