@@ -136,15 +136,26 @@ def report_progress(
136136 message : Optional [str ] = None ,
137137 percentage : Optional [int ] = None ,
138138 ) -> Generator [Callable [[str , Optional [int ]], None ], None , None ]:
139- token = self ._progress_begin (title , message , percentage )
139+ if self ._config :
140+ client_supports_progress_reporting = self ._config .capabilities .get ("window" , {}).get ("workDoneProgress" , False )
141+ else :
142+ client_supports_progress_reporting = False
143+
144+ if client_supports_progress_reporting :
145+ token = self ._progress_begin (title , message , percentage )
140146
141- def progress_message (message : str , percentage : Optional [int ] = None ) -> None :
142- self ._progress_report (token , message , percentage )
147+ def progress_message (message : str , percentage : Optional [int ] = None ) -> None :
148+ self ._progress_report (token , message , percentage )
149+
150+ try :
151+ yield progress_message
152+ finally :
153+ self ._progress_end (token )
154+ else :
155+ def dummy_progress_message (message : str , percentage : Optional [int ] = None ) -> None :
156+ pass
143157
144- try :
145- yield progress_message
146- finally :
147- self ._progress_end (token )
158+ yield dummy_progress_message
148159
149160 def _progress_begin (
150161 self ,
@@ -154,7 +165,7 @@ def _progress_begin(
154165 ) -> str :
155166 token = str (uuid .uuid4 ())
156167
157- self ._endpoint .request (self .M_INITIALIZE_PROGRESS , {'token' : token }).result (_utils . CALL_TIMEOUT )
168+ self ._endpoint .request (self .M_INITIALIZE_PROGRESS , {'token' : token }).result ()
158169
159170 value = {
160171 "kind" : "begin" ,
0 commit comments