|
10 | 10 | from vws.response import Response |
11 | 11 |
|
12 | 12 |
|
| 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 | + |
13 | 35 | @runtime_checkable |
14 | 36 | class Transport(Protocol): |
15 | 37 | """Protocol for HTTP transports used by VWS clients. |
@@ -149,21 +171,7 @@ def __call__( |
149 | 171 | Returns: |
150 | 172 | A Response populated from the httpx response. |
151 | 173 | """ |
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) |
167 | 175 |
|
168 | 176 | httpx_response = self._client.request( |
169 | 177 | method=method, |
@@ -272,21 +280,7 @@ async def __call__( |
272 | 280 | Returns: |
273 | 281 | A Response populated from the httpx response. |
274 | 282 | """ |
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) |
290 | 284 |
|
291 | 285 | httpx_response = await self._client.request( |
292 | 286 | method=method, |
|
0 commit comments