22
33from __future__ import annotations
44
5- from typing import Any , cast
5+ from typing import Any , Mapping , cast
6+ from typing_extensions import override
67
78from ..._client import Kernel , AsyncKernel
89from ..._compat import model_copy
@@ -18,19 +19,18 @@ def __init__(self, *, browser_session_id: str, **kwargs: Any) -> None:
1819 self ._scoped_session_id = browser_session_id
1920 super ().__init__ (** kwargs )
2021
22+ @override
2123 def _prepare_options (self , options : FinalRequestOptions ) -> FinalRequestOptions :
2224 options = super ()._prepare_options (options )
2325 url = options .url
24- if not isinstance (url , str ):
25- return options
2626 prefix = f"/browsers/{ self ._scoped_session_id } /"
2727 if not url .startswith (prefix ):
2828 return options
2929 suffix = url [len (prefix ) :].lstrip ("/" )
3030 new_url = f"/{ suffix } " if suffix else "/"
3131 out = model_copy (options )
3232 out .url = new_url
33- return cast ( FinalRequestOptions , out )
33+ return out
3434
3535
3636class _BrowserSessionAsyncKernel (AsyncKernel ):
@@ -40,27 +40,30 @@ def __init__(self, *, browser_session_id: str, **kwargs: Any) -> None:
4040 self ._scoped_session_id = browser_session_id
4141 super ().__init__ (** kwargs )
4242
43+ @override
4344 async def _prepare_options (self , options : FinalRequestOptions ) -> FinalRequestOptions :
4445 options = await super ()._prepare_options (options )
4546 url = options .url
46- if not isinstance (url , str ):
47- return options
4847 prefix = f"/browsers/{ self ._scoped_session_id } /"
4948 if not url .startswith (prefix ):
5049 return options
5150 suffix = url [len (prefix ) :].lstrip ("/" )
5251 new_url = f"/{ suffix } " if suffix else "/"
5352 out = model_copy (options )
5453 out .url = new_url
55- return cast ( FinalRequestOptions , out )
54+ return out
5655
5756
5857def build_browser_session_kernel (
5958 parent : Kernel , * , session_id : str , session_base_url : str , jwt : str
6059) -> _BrowserSessionKernel :
6160 """Build a sync client sharing the parent's httpx transport; requests use session_base_url."""
62- base_q = getattr (parent , "_custom_query" , None ) or {}
63- dq = {str (k ): v for k , v in dict (base_q ).items ()}
61+ base_q_raw = getattr (parent , "_custom_query" , None )
62+ if isinstance (base_q_raw , Mapping ):
63+ base_q = {str (k ): v for k , v in cast (Mapping [str , object ], base_q_raw ).items ()}
64+ else :
65+ base_q = {}
66+ dq = dict (base_q )
6467 dq ["jwt" ] = jwt
6568 return _BrowserSessionKernel (
6669 browser_session_id = session_id ,
@@ -78,8 +81,12 @@ def build_browser_session_kernel(
7881def build_async_browser_session_kernel (
7982 parent : AsyncKernel , * , session_id : str , session_base_url : str , jwt : str
8083) -> _BrowserSessionAsyncKernel :
81- base_q = getattr (parent , "_custom_query" , None ) or {}
82- dq = {str (k ): v for k , v in dict (base_q ).items ()}
84+ base_q_raw = getattr (parent , "_custom_query" , None )
85+ if isinstance (base_q_raw , Mapping ):
86+ base_q = {str (k ): v for k , v in cast (Mapping [str , object ], base_q_raw ).items ()}
87+ else :
88+ base_q = {}
89+ dq = dict (base_q )
8390 dq ["jwt" ] = jwt
8491 return _BrowserSessionAsyncKernel (
8592 browser_session_id = session_id ,
0 commit comments