33import warnings
44from abc import ABC , abstractmethod
55from pathlib import Path
6- from typing import TYPE_CHECKING , Awaitable , Callable , Literal
6+ from typing import TYPE_CHECKING , Awaitable , Callable , Literal , Optional
77
88from .._docstring import add_example
99from .._utils import AsyncCallbacks , CancelCallback , wrap_async
@@ -167,7 +167,7 @@ def on_restored(
167167 @abstractmethod
168168 async def update_query_string (
169169 self ,
170- query_string : str ,
170+ query_string : Optional [ str ] = None ,
171171 mode : Literal ["replace" , "push" ] = "replace" ,
172172 ) -> None :
173173 """
@@ -176,7 +176,7 @@ async def update_query_string(
176176 Parameters
177177 ----------
178178 query_string
179- The query string to set.
179+ The query string to set. If `None`, the current bookmark state URL will be used.
180180 mode
181181 Whether to replace the current URL or push a new one. Pushing a new value
182182 will add to the user's browser history.
@@ -448,9 +448,12 @@ async def invoke_on_restored_callbacks():
448448
449449 async def update_query_string (
450450 self ,
451- query_string : str ,
451+ query_string : Optional [ str ] = None ,
452452 mode : Literal ["replace" , "push" ] = "replace" ,
453453 ) -> None :
454+ if query_string is None :
455+ query_string = await self .get_bookmark_url ()
456+
454457 if mode not in {"replace" , "push" }:
455458 raise ValueError (f"Invalid mode: { mode } " )
456459 await self ._root_session ._send_message (
@@ -723,7 +726,9 @@ def _restore_context(self) -> RestoreContext | None:
723726 return self ._root_bookmark ._restore_context
724727
725728 async def update_query_string (
726- self , query_string : str , mode : Literal ["replace" , "push" ] = "replace"
729+ self ,
730+ query_string : Optional [str ] = None ,
731+ mode : Literal ["replace" , "push" ] = "replace" ,
727732 ) -> None :
728733 await self ._root_bookmark .update_query_string (query_string , mode )
729734
@@ -769,7 +774,9 @@ def on_bookmarked(
769774 return lambda : None
770775
771776 async def update_query_string (
772- self , query_string : str , mode : Literal ["replace" , "push" ] = "replace"
777+ self ,
778+ query_string : Optional [str ] = None ,
779+ mode : Literal ["replace" , "push" ] = "replace" ,
773780 ) -> None :
774781 # no-op within ExpressStub
775782 return None
0 commit comments