Skip to content

Commit 9e3084a

Browse files
committed
Preserve explicit parsing on empty responses
1 parent af5ed42 commit 9e3084a

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

‎src/kernel/_response.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
Iterator,
1717
AsyncIterator,
1818
cast,
19-
get_args,
2019
overload,
2120
)
2221
from typing_extensions import Awaitable, ParamSpec, override, get_origin
@@ -186,7 +185,7 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T:
186185
return cast(R, None)
187186

188187
response = self.http_response
189-
if response.status_code == 204 and NoneType in get_args(cast_to):
188+
if response.status_code == 204 and to is None and is_basemodel(cast_to):
190189
return cast(R, None)
191190
if cast_to == str:
192191
return cast(R, response.text)

‎src/kernel/resources/browser_pools.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ def acquire(
607607
options=make_request_options(
608608
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
609609
),
610-
cast_to=Optional[BrowserPoolAcquireResponse],
610+
cast_to=BrowserPoolAcquireResponse,
611611
)
612612

613613
def flush(
@@ -1264,7 +1264,7 @@ async def acquire(
12641264
options=make_request_options(
12651265
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
12661266
),
1267-
cast_to=Optional[BrowserPoolAcquireResponse],
1267+
cast_to=BrowserPoolAcquireResponse,
12681268
)
12691269

12701270
async def flush(

‎tests/test_browser_pool_acquire_response.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ def handle(_request: httpx.Request) -> httpx.Response:
3737
response = client.browser_pools.with_raw_response.acquire("pool")
3838
assert response.status_code == 204
3939
assert response.parse() is None
40+
assert response.parse(to=str) == ""
41+
assert response.parse(to=bytes) == b""
42+
assert response.parse(to=httpx.Response) is response.http_response
4043
assert calls == 2
4144

4245

0 commit comments

Comments
 (0)