From d75eb9aa7005514c01b3ced5924191ed7cd780ab Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Fri, 5 Jan 2024 19:44:39 +0100 Subject: [PATCH] refactor(langserver): rename core.concurrent.FutureEx to Task --- .../core/src/robotcode/core/concurrent.py | 42 +++++++++---------- .../src/robotcode/debugger/protocol.py | 6 +-- .../src/robotcode/jsonrpc2/protocol.py | 12 +++--- .../common/parts/code_action.py | 6 +-- .../language_server/common/parts/code_lens.py | 12 +++--- .../common/parts/completion.py | 8 ++-- .../common/parts/declaration.py | 4 +- .../common/parts/definition.py | 4 +- .../common/parts/diagnostics.py | 40 ++++++++---------- .../common/parts/document_highlight.py | 4 +- .../common/parts/formatting.py | 6 +-- .../language_server/common/parts/hover.py | 4 +- .../common/parts/implementation.py | 4 +- .../common/parts/inlay_hint.py | 12 ++---- .../common/parts/inline_value.py | 14 +++---- .../common/parts/linked_editing_ranges.py | 4 +- .../common/parts/references.py | 4 +- .../language_server/common/parts/rename.py | 10 ++--- .../common/parts/selection_range.py | 4 +- .../common/parts/semantic_tokens.py | 14 +++---- .../common/parts/signature_help.py | 4 +- .../language_server/common/parts/workspace.py | 14 +++---- .../language_server/common/protocol.py | 14 +++---- .../diagnostics/imports_manager.py | 4 +- .../robotframework/parts/code_lens.py | 4 +- .../parts/document_highlight.py | 8 ++-- .../robotframework/parts/folding_range.py | 4 +- .../robotframework/parts/goto.py | 8 ++-- .../robotframework/parts/hover.py | 10 ++--- .../robotframework/parts/inlay_hint.py | 4 +- .../robotframework/parts/references.py | 4 +- .../robotframework/parts/semantic_tokens.py | 4 +- 32 files changed, 141 insertions(+), 155 deletions(-) diff --git a/packages/core/src/robotcode/core/concurrent.py b/packages/core/src/robotcode/core/concurrent.py index 196d6364..1c636fa9 100644 --- a/packages/core/src/robotcode/core/concurrent.py +++ b/packages/core/src/robotcode/core/concurrent.py @@ -22,7 +22,7 @@ __THREADED_MARKER = "__robotcode_threaded" -class FutureEx(Future, Generic[_TResult]): # type: ignore[type-arg] +class Task(Future, Generic[_TResult]): # type: ignore[type-arg] def __init__(self) -> None: super().__init__() self.cancelation_requested_event = Event() @@ -38,7 +38,7 @@ def cancel(self) -> bool: def result(self, timeout: Optional[float] = None) -> _TResult: return cast(_TResult, super().result(timeout)) - def add_done_callback(self, fn: Callable[["FutureEx[Any]"], Any]) -> None: + def add_done_callback(self, fn: Callable[["Task[Any]"], Any]) -> None: super().add_done_callback(fn) # type: ignore[arg-type] @@ -74,14 +74,14 @@ def is_threaded_callable(callable: Callable[..., Any]) -> bool: class _Local(local): def __init__(self) -> None: super().__init__() - self._local_future: Optional[FutureEx[Any]] = None + self._local_future: Optional[Task[Any]] = None _local_storage = _Local() -def _run_callable_in_thread_handler( - future: FutureEx[_TResult], +def _run_task_in_thread_handler( + future: Task[_TResult], callable: Callable[..., _TResult], args: Tuple[Any, ...], kwargs: Dict[str, Any], @@ -102,12 +102,12 @@ def _run_callable_in_thread_handler( _local_storage._local_future = None -def is_current_thread_cancelled() -> bool: +def is_current_task_cancelled() -> bool: local_future = _local_storage._local_future return local_future is not None and local_future.cancelation_requested -def check_current_thread_canceled(at_least_seconds: Optional[float] = None, raise_exception: bool = True) -> bool: +def check_current_task_canceled(at_least_seconds: Optional[float] = None, raise_exception: bool = True) -> bool: local_future = _local_storage._local_future if local_future is None: return False @@ -125,28 +125,28 @@ def check_current_thread_canceled(at_least_seconds: Optional[float] = None, rais return True -_running_callables_lock = RLock() -_running_callables: Dict[FutureEx[Any], Thread] = {} +_running_tasks_lock = RLock() +_running_tasks: Dict[Task[Any], Thread] = {} -def _remove_future_from_running_callables(future: FutureEx[Any]) -> None: - with _running_callables_lock: - _running_callables.pop(future, None) +def _remove_future_from_running_tasks(future: Task[Any]) -> None: + with _running_tasks_lock: + _running_tasks.pop(future, None) _P = ParamSpec("_P") -def run_in_thread(callable: Callable[_P, _TResult], *args: _P.args, **kwargs: _P.kwargs) -> FutureEx[_TResult]: - future: FutureEx[_TResult] = FutureEx() - with _running_callables_lock: +def run_as_task(callable: Callable[_P, _TResult], *args: _P.args, **kwargs: _P.kwargs) -> Task[_TResult]: + future: Task[_TResult] = Task() + with _running_tasks_lock: thread = Thread( - target=_run_callable_in_thread_handler, + target=_run_task_in_thread_handler, args=(future, callable, args, kwargs), name=str(callable), ) - _running_callables[future] = thread - future.add_done_callback(_remove_future_from_running_callables) + _running_tasks[future] = thread + future.add_done_callback(_remove_future_from_running_tasks) # TODO: don't set daemon=True because it can be deprecated in future pyhton versions thread.daemon = True thread.start() @@ -154,10 +154,10 @@ def run_in_thread(callable: Callable[_P, _TResult], *args: _P.args, **kwargs: _P return future -def cancel_running_callables(timeout: Optional[float] = None) -> None: +def _cancel_all_running_tasks(timeout: Optional[float] = None) -> None: threads: List[Thread] = [] - with _running_callables_lock: - for future, thread in _running_callables.items(): + with _running_tasks_lock: + for future, thread in _running_tasks.items(): if not future.cancelation_requested: future.cancel() threads.append(thread) diff --git a/packages/debugger/src/robotcode/debugger/protocol.py b/packages/debugger/src/robotcode/debugger/protocol.py index b0c62ba7..2cb352e5 100644 --- a/packages/debugger/src/robotcode/debugger/protocol.py +++ b/packages/debugger/src/robotcode/debugger/protocol.py @@ -20,7 +20,7 @@ Union, ) -from robotcode.core.concurrent import FutureEx +from robotcode.core.concurrent import Task from robotcode.core.utils.dataclasses import as_dict, as_json, from_dict from robotcode.core.utils.inspect import ensure_coroutine from robotcode.core.utils.logging import LoggingDescriptor @@ -308,8 +308,8 @@ def send_response( ) @_logger.call - def send_request(self, request: Request, return_type: Optional[Type[TResult]] = None) -> FutureEx[TResult]: - result: FutureEx[TResult] = FutureEx() + def send_request(self, request: Request, return_type: Optional[Type[TResult]] = None) -> Task[TResult]: + result: Task[TResult] = Task() with self._sended_request_lock: self._sended_request[request.seq] = SendedRequestEntry(result, return_type) diff --git a/packages/jsonrpc2/src/robotcode/jsonrpc2/protocol.py b/packages/jsonrpc2/src/robotcode/jsonrpc2/protocol.py index 12d502d0..a4fb22e9 100644 --- a/packages/jsonrpc2/src/robotcode/jsonrpc2/protocol.py +++ b/packages/jsonrpc2/src/robotcode/jsonrpc2/protocol.py @@ -33,7 +33,7 @@ ) from robotcode.core.async_tools import run_coroutine_in_thread -from robotcode.core.concurrent import FutureEx, run_in_thread +from robotcode.core.concurrent import Task, run_as_task from robotcode.core.event import event from robotcode.core.utils.dataclasses import as_json, from_dict from robotcode.core.utils.inspect import ensure_coroutine, iter_methods @@ -352,7 +352,7 @@ def get_param_type(self, name: str) -> Optional[Type[Any]]: class SendedRequestEntry: - def __init__(self, future: FutureEx[Any], result_type: Optional[Type[Any]]) -> None: + def __init__(self, future: Task[Any], result_type: Optional[Type[Any]]) -> None: self.future = future self.result_type = result_type @@ -567,8 +567,8 @@ def send_request( method: str, params: Optional[Any] = None, return_type: Optional[Type[_TResult]] = None, - ) -> FutureEx[_TResult]: - result: FutureEx[_TResult] = FutureEx() + ) -> Task[_TResult]: + result: Task[_TResult] = Task() with self._sended_request_lock: self._sended_request_count += 1 @@ -753,7 +753,7 @@ async def handle_request(self, message: JsonRPCRequest) -> None: **params[1], ) else: - task = asyncio.wrap_future(run_in_thread(e.method, *params[0], **params[1])) + task = asyncio.wrap_future(run_as_task(e.method, *params[0], **params[1])) else: task = asyncio.create_task(e.method(*params[0], **params[1]), name=message.method) @@ -850,7 +850,7 @@ async def handle_notification(self, message: JsonRPCNotification) -> None: ensure_coroutine(cast(Callable[..., Any], e.method)), *params[0], **params[1] ) else: - task = asyncio.wrap_future(run_in_thread(e.method, *params[0], **params[1])) + task = asyncio.wrap_future(run_as_task(e.method, *params[0], **params[1])) else: task = asyncio.create_task(e.method(*params[0], **params[1]), name=message.method) diff --git a/packages/language_server/src/robotcode/language_server/common/parts/code_action.py b/packages/language_server/src/robotcode/language_server/common/parts/code_action.py index 68193c60..950ccb7a 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/code_action.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/code_action.py @@ -2,7 +2,7 @@ from itertools import chain from typing import TYPE_CHECKING, Any, Final, List, Optional, Union, cast -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( CodeAction, @@ -94,7 +94,7 @@ def _text_document_code_action( context, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -113,7 +113,7 @@ def _text_document_code_action_resolve(self, params: CodeAction, *args: Any, **k results: List[CodeAction] = [] for result in self.resolve(self, params): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/code_lens.py b/packages/language_server/src/robotcode/language_server/common/parts/code_lens.py index 6eb9a9bf..c191b294 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/code_lens.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/code_lens.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import FutureEx, check_current_thread_canceled, run_in_thread +from robotcode.core.concurrent import Task, check_current_task_canceled, run_as_task from robotcode.core.event import event from robotcode.core.lsp.types import ( CodeLens, @@ -26,7 +26,7 @@ class CodeLensProtocolPart(LanguageServerProtocolPart): def __init__(self, parent: "LanguageServerProtocol") -> None: super().__init__(parent) - self.refresh_task: Optional[FutureEx[Any]] = None + self.refresh_task: Optional[Task[Any]] = None self._refresh_timeout = 5 @event @@ -51,7 +51,7 @@ def _text_document_code_lens( return None for result in self.collect(self, document, callback_filter=language_id_filter(document)): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -73,7 +73,7 @@ def _code_lens_resolve(self, params: CodeLens, *args: Any, **kwargs: Any) -> Cod results: List[CodeLens] = [] for result in self.resolve(self, params): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -92,7 +92,7 @@ def refresh(self, now: bool = True) -> None: if self.refresh_task is not None and not self.refresh_task.done(): self.refresh_task.cancel() - self.refresh_task = run_in_thread(self._refresh, now) + self.refresh_task = run_as_task(self._refresh, now) def _refresh(self, now: bool = True) -> None: if ( @@ -102,6 +102,6 @@ def _refresh(self, now: bool = True) -> None: and self.parent.client_capabilities.workspace.code_lens.refresh_support ): if not now: - check_current_thread_canceled(1) + check_current_task_canceled(1) self.parent.send_request("workspace/codeLens/refresh").result(self._refresh_timeout) diff --git a/packages/language_server/src/robotcode/language_server/common/parts/completion.py b/packages/language_server/src/robotcode/language_server/common/parts/completion.py index 80f468fe..f6439a05 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/completion.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/completion.py @@ -2,7 +2,7 @@ from itertools import chain from typing import TYPE_CHECKING, Any, Final, List, Optional, Union, cast -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( CompletionContext, @@ -96,7 +96,7 @@ def _text_document_completion( results: List[Union[List[CompletionItem], CompletionList]] = [] if context is not None and context.trigger_kind == CompletionTriggerKind.TRIGGER_CHARACTER: - check_current_thread_canceled(0.25) + check_current_task_canceled(0.25) document = self.parent.documents.get(text_document.uri) if document is None: @@ -111,7 +111,7 @@ def _text_document_completion( context, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -124,7 +124,7 @@ def _text_document_completion( return None for result in results: - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, CompletionList): for item in result.items: diff --git a/packages/language_server/src/robotcode/language_server/common/parts/declaration.py b/packages/language_server/src/robotcode/language_server/common/parts/declaration.py index eb1725da..32625288 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/declaration.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/declaration.py @@ -1,7 +1,7 @@ from asyncio import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional, Union -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( DeclarationParams, @@ -70,7 +70,7 @@ def _text_document_declaration( position, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/definition.py b/packages/language_server/src/robotcode/language_server/common/parts/definition.py index c1843229..4e20e79e 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/definition.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/definition.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional, Union -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( DefinitionParams, @@ -70,7 +70,7 @@ def _text_document_definition( document.position_from_utf16(position), callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/diagnostics.py b/packages/language_server/src/robotcode/language_server/common/parts/diagnostics.py index 7db9db38..56440613 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/diagnostics.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/diagnostics.py @@ -7,12 +7,7 @@ from threading import Event, RLock from typing import TYPE_CHECKING, Any, Dict, Final, List, Optional, cast -from robotcode.core.concurrent import ( - FutureEx, - check_current_thread_canceled, - run_in_thread, - threaded, -) +from robotcode.core.concurrent import Task, check_current_task_canceled, run_as_task from robotcode.core.event import event from robotcode.core.lsp.types import ( Diagnostic, @@ -77,7 +72,7 @@ class DiagnosticsData: id: str = field(default_factory=lambda: str(uuid.uuid4())) entries: Dict[Any, Optional[List[Diagnostic]]] = field(default_factory=dict) version: Optional[int] = None - future: Optional[FutureEx[Any]] = None + future: Optional[Task[Any]] = None force: bool = False @@ -92,7 +87,7 @@ def __init__(self, protocol: "LanguageServerProtocol") -> None: self._workspace_load_lock = RLock() self._workspace_loaded = False - self._workspace_diagnostics_task: Optional[FutureEx[Any]] = None + self._workspace_diagnostics_task: Optional[Task[Any]] = None self.parent.on_initialized.add(self.server_initialized) @@ -103,14 +98,14 @@ def __init__(self, protocol: "LanguageServerProtocol") -> None: self.in_get_workspace_diagnostics = Event() self.in_get_workspace_diagnostics - self.refresh_task: Optional[FutureEx[Any]] = None + self.refresh_task: Optional[Task[Any]] = None self.client_supports_pull = False self._refresh_timeout = 5 def server_initialized(self, sender: Any) -> None: - self._workspace_diagnostics_task = run_in_thread(self.run_workspace_diagnostics) + self._workspace_diagnostics_task = run_as_task(self.run_workspace_diagnostics) if not self.client_supports_pull: self.parent.documents.did_open.add(self.update_document_diagnostics) @@ -178,9 +173,8 @@ def force_refresh_document(self, document: TextDocument, refresh: bool = True) - self.refresh() @_logger.call - @threaded def on_did_close(self, sender: Any, document: TextDocument) -> None: - run_in_thread(self._close_diagnostics_for_document, document) + run_as_task(self._close_diagnostics_for_document, document) def _close_diagnostics_for_document(self, document: TextDocument) -> None: if self.get_diagnostics_mode(document.uri) == DiagnosticsMode.WORKSPACE: @@ -205,7 +199,7 @@ def run_workspace_diagnostics(self) -> None: self.ensure_workspace_loaded() while True: - check_current_thread_canceled() + check_current_task_canceled() try: documents = [ @@ -220,7 +214,7 @@ def run_workspace_diagnostics(self) -> None: ] if len(documents) == 0: - check_current_thread_canceled(1) + check_current_task_canceled(1) continue self._logger.info(lambda: f"start collecting workspace diagnostics for {len(documents)} documents") @@ -236,7 +230,7 @@ def run_workspace_diagnostics(self) -> None: start=False, ) as progress: for i, document in enumerate(documents): - check_current_thread_canceled() + check_current_task_canceled() mode = self.get_diagnostics_mode(document.uri) if mode == DiagnosticsMode.OFF: @@ -269,7 +263,7 @@ def run_workspace_diagnostics(self) -> None: ) if not done_something: - check_current_thread_canceled(1) + check_current_task_canceled(1) self._logger.info( lambda: f"collecting workspace diagnostics for {len(documents)} " @@ -291,8 +285,8 @@ def create_document_diagnostics_task( single: bool, debounce: bool = True, send_diagnostics: bool = True, - ) -> FutureEx[Any]: - def done(t: FutureEx[Any]) -> None: + ) -> Task[Any]: + def done(t: Task[Any]) -> None: self._logger.debug(lambda: f"diagnostics for {document} {'canceled' if t.cancelled() else 'ended'}") data = self.get_diagnostics_data(document) @@ -308,7 +302,7 @@ def done(t: FutureEx[Any]) -> None: future.cancel() data.version = document.version - data.future = run_in_thread( + data.future = run_as_task( self._get_diagnostics_for_document, document, data, @@ -331,7 +325,7 @@ def _get_diagnostics_for_document( self._logger.debug(lambda: f"Get diagnostics for {document}") if debounce: - check_current_thread_canceled(0.75) + check_current_task_canceled(0.75) collected_keys: List[Any] = [] try: @@ -341,7 +335,7 @@ def _get_diagnostics_for_document( callback_filter=language_id_filter(document), return_exceptions=True, ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -462,7 +456,7 @@ def refresh(self, now: bool = False) -> None: if self.refresh_task is not None and not self.refresh_task.done(): self.refresh_task.cancel() - self.refresh_task = run_in_thread(self._refresh, now) + self.refresh_task = run_as_task(self._refresh, now) def _refresh(self, now: bool = False) -> None: if ( @@ -472,6 +466,6 @@ def _refresh(self, now: bool = False) -> None: and self.parent.client_capabilities.workspace.diagnostics.refresh_support ): if not now: - check_current_thread_canceled(1) + check_current_task_canceled(1) self.parent.send_request("workspace/diagnostic/refresh").result(self._refresh_timeout) diff --git a/packages/language_server/src/robotcode/language_server/common/parts/document_highlight.py b/packages/language_server/src/robotcode/language_server/common/parts/document_highlight.py index e4afda47..8f52a88d 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/document_highlight.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/document_highlight.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( DocumentHighlight, @@ -57,7 +57,7 @@ def _text_document_document_highlight( document.position_from_utf16(position), callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/formatting.py b/packages/language_server/src/robotcode/language_server/common/parts/formatting.py index 6d972e5b..c48c2b22 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/formatting.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/formatting.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( DocumentFormattingOptions, @@ -81,7 +81,7 @@ def _text_document_formatting( callback_filter=language_id_filter(document), **kwargs, ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -119,7 +119,7 @@ def _text_document_range_formatting( callback_filter=language_id_filter(document), **kwargs, ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/hover.py b/packages/language_server/src/robotcode/language_server/common/parts/hover.py index 2194251f..1a9613e9 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/hover.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/hover.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( Hover, @@ -57,7 +57,7 @@ def _text_document_hover( document.position_from_utf16(position), callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/implementation.py b/packages/language_server/src/robotcode/language_server/common/parts/implementation.py index 64a3f905..0286882d 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/implementation.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/implementation.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional, Union -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( ImplementationParams, @@ -69,7 +69,7 @@ def _text_document_implementation( position, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/inlay_hint.py b/packages/language_server/src/robotcode/language_server/common/parts/inlay_hint.py index b8d9198f..fcb9fed8 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/inlay_hint.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/inlay_hint.py @@ -1,11 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import ( - FutureEx, - check_current_thread_canceled, - run_in_thread, -) +from robotcode.core.concurrent import Task, check_current_task_canceled, run_as_task from robotcode.core.event import event from robotcode.core.lsp.types import ( InlayHint, @@ -31,7 +27,7 @@ class InlayHintProtocolPart(LanguageServerProtocolPart): def __init__(self, parent: "LanguageServerProtocol") -> None: super().__init__(parent) - self.refresh_task: Optional[FutureEx[Any]] = None + self.refresh_task: Optional[Task[Any]] = None self._refresh_timeout = 5 @event @@ -101,7 +97,7 @@ def refresh(self, now: bool = True) -> None: if self.refresh_task is not None and not self.refresh_task.done(): self.refresh_task.cancel() - self.refresh_task = run_in_thread(self._refresh, now) + self.refresh_task = run_as_task(self._refresh, now) def _refresh(self, now: bool = True) -> None: if ( @@ -111,6 +107,6 @@ def _refresh(self, now: bool = True) -> None: and self.parent.client_capabilities.workspace.inlay_hint.refresh_support ): if not now: - check_current_thread_canceled(1) + check_current_task_canceled(1) self.parent.send_request("workspace/inlayHint/refresh").result(self._refresh_timeout) diff --git a/packages/language_server/src/robotcode/language_server/common/parts/inline_value.py b/packages/language_server/src/robotcode/language_server/common/parts/inline_value.py index 2dc68327..e2298c73 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/inline_value.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/inline_value.py @@ -1,11 +1,7 @@ from asyncio import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import ( - FutureEx, - check_current_thread_canceled, - run_in_thread, -) +from robotcode.core.concurrent import Task, check_current_task_canceled, run_as_task from robotcode.core.event import event from robotcode.core.lsp.types import ( DocumentSelector, @@ -40,7 +36,7 @@ class InlineValueProtocolPart(LanguageServerProtocolPart): def __init__(self, parent: "LanguageServerProtocol") -> None: super().__init__(parent) - self.refresh_task: Optional[FutureEx[Any]] = None + self.refresh_task: Optional[Task[Any]] = None self._refresh_timeout = 5 @event @@ -85,7 +81,7 @@ def _text_document_inline_value( context, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -106,7 +102,7 @@ def refresh(self, now: bool = True) -> None: if self.refresh_task is not None and not self.refresh_task.done(): self.refresh_task.cancel() - self.refresh_task = run_in_thread(self._refresh, now) + self.refresh_task = run_as_task(self._refresh, now) def _refresh(self, now: bool = True) -> None: if ( @@ -116,6 +112,6 @@ def _refresh(self, now: bool = True) -> None: and self.parent.client_capabilities.workspace.inline_value.refresh_support ): if not now: - check_current_thread_canceled(1) + check_current_task_canceled(1) self.parent.send_request("workspace/inlineValue/refresh").result(self._refresh_timeout) diff --git a/packages/language_server/src/robotcode/language_server/common/parts/linked_editing_ranges.py b/packages/language_server/src/robotcode/language_server/common/parts/linked_editing_ranges.py index 38fa190c..b9f69439 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/linked_editing_ranges.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/linked_editing_ranges.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( LinkedEditingRangeOptions, @@ -58,7 +58,7 @@ def _text_document_linked_editing_range( document.position_from_utf16(position), callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/references.py b/packages/language_server/src/robotcode/language_server/common/parts/references.py index 3cd5f675..fc73a5c5 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/references.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/references.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( Location, @@ -66,7 +66,7 @@ def _text_document_references( context, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/rename.py b/packages/language_server/src/robotcode/language_server/common/parts/rename.py index 0922181c..c81803e4 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/rename.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/rename.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( ErrorCodes, @@ -80,7 +80,7 @@ def _text_document_rename( new_name, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -93,7 +93,7 @@ def _text_document_rename( return None for we in edits: - check_current_thread_canceled() + check_current_task_canceled() if we.changes: for uri, changes in we.changes.items(): @@ -111,7 +111,7 @@ def _text_document_rename( result = WorkspaceEdit() for we in edits: - check_current_thread_canceled() + check_current_task_canceled() if we.changes: if result.changes is None: @@ -150,7 +150,7 @@ def _text_document_prepare_rename( document.position_from_utf16(position), callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if isinstance(result, CantRenameError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/selection_range.py b/packages/language_server/src/robotcode/language_server/common/parts/selection_range.py index 8c4c7aba..ed8d00ea 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/selection_range.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/selection_range.py @@ -1,7 +1,7 @@ from concurrent.futures import CancelledError from typing import TYPE_CHECKING, Any, Final, List, Optional -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( Position, @@ -56,7 +56,7 @@ def _text_document_selection_range( [document.position_from_utf16(p) for p in positions], callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/semantic_tokens.py b/packages/language_server/src/robotcode/language_server/common/parts/semantic_tokens.py index 38363162..8c2da0ff 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/semantic_tokens.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/semantic_tokens.py @@ -2,7 +2,7 @@ from enum import Enum from typing import TYPE_CHECKING, Any, Final, List, Optional, Union -from robotcode.core.concurrent import FutureEx, check_current_thread_canceled, run_in_thread +from robotcode.core.concurrent import Task, check_current_task_canceled, run_as_task from robotcode.core.event import event from robotcode.core.lsp.types import ( Range, @@ -37,7 +37,7 @@ class SemanticTokensProtocolPart(LanguageServerProtocolPart): def __init__(self, parent: "LanguageServerProtocol") -> None: super().__init__(parent) - self.refresh_task: Optional[FutureEx[Any]] = None + self.refresh_task: Optional[Task[Any]] = None self._refresh_timeout = 5 self.token_types: List[Enum] = list(SemanticTokenTypes) @@ -100,7 +100,7 @@ def _text_document_semantic_tokens_full( callback_filter=language_id_filter(document), **kwargs, ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): @@ -142,7 +142,7 @@ def _text_document_semantic_tokens_full_delta( callback_filter=language_id_filter(document), **kwargs, ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): self._logger.exception(result, exc_info=result) @@ -177,7 +177,7 @@ def _text_document_semantic_tokens_range( callback_filter=language_id_filter(document), **kwargs, ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): self._logger.exception(result, exc_info=result) @@ -195,7 +195,7 @@ def refresh(self, now: bool = True) -> None: if self.refresh_task is not None and not self.refresh_task.done(): self.refresh_task.cancel() - self.refresh_task = run_in_thread(self._refresh, now) + self.refresh_task = run_as_task(self._refresh, now) def _refresh(self, now: bool = True) -> None: if ( @@ -205,6 +205,6 @@ def _refresh(self, now: bool = True) -> None: and self.parent.client_capabilities.workspace.semantic_tokens.refresh_support ): if not now: - check_current_thread_canceled(1) + check_current_task_canceled(1) self.parent.send_request("workspace/semanticTokens/refresh").result(self._refresh_timeout) diff --git a/packages/language_server/src/robotcode/language_server/common/parts/signature_help.py b/packages/language_server/src/robotcode/language_server/common/parts/signature_help.py index 7bab9322..073f6a61 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/signature_help.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/signature_help.py @@ -2,7 +2,7 @@ from itertools import chain from typing import TYPE_CHECKING, Any, Final, List, Optional, cast -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.event import event from robotcode.core.lsp.types import ( Position, @@ -94,7 +94,7 @@ def _text_document_signature_help( context, callback_filter=language_id_filter(document), ): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(result, BaseException): if not isinstance(result, CancelledError): diff --git a/packages/language_server/src/robotcode/language_server/common/parts/workspace.py b/packages/language_server/src/robotcode/language_server/common/parts/workspace.py index b1aab08e..165bc181 100644 --- a/packages/language_server/src/robotcode/language_server/common/parts/workspace.py +++ b/packages/language_server/src/robotcode/language_server/common/parts/workspace.py @@ -20,7 +20,7 @@ cast, ) -from robotcode.core.concurrent import FutureEx, threaded +from robotcode.core.concurrent import Task, threaded from robotcode.core.event import event from robotcode.core.lsp.types import ( ApplyWorkspaceEditParams, @@ -331,8 +331,8 @@ def get_configuration_future( section: Type[_TConfig], scope_uri: Union[str, Uri, None] = None, request: bool = True, - ) -> FutureEx[_TConfig]: - result_future: FutureEx[_TConfig] = FutureEx() + ) -> Task[_TConfig]: + result_future: Task[_TConfig] = Task() scope = self.get_workspace_folder(scope_uri) if scope_uri is not None else None @@ -345,7 +345,7 @@ def get_configuration_future( ) return result_future - def _get_configuration_done(f: FutureEx[Optional[Any]]) -> None: + def _get_configuration_done(f: Task[Optional[Any]]) -> None: try: if result_future.cancelled(): return @@ -378,7 +378,7 @@ def get_configuration_raw( section: Optional[str], scope_uri: Union[str, Uri, None] = None, request: bool = True, - ) -> FutureEx[Optional[Any]]: + ) -> Task[Optional[Any]]: if ( self.parent.client_capabilities and self.parent.client_capabilities.workspace @@ -405,7 +405,7 @@ def get_configuration_raw( else: result = {} break - result_future: FutureEx[Optional[Any]] = FutureEx() + result_future: Task[Optional[Any]] = Task() result_future.set_result([result]) return result_future @@ -509,7 +509,7 @@ def add_file_watchers( and self.parent.client_capabilities.workspace.did_change_watched_files.dynamic_registration ): - def _done(f: FutureEx[None]) -> None: + def _done(f: Task[None]) -> None: if f.cancelled(): return exception = f.exception() diff --git a/packages/language_server/src/robotcode/language_server/common/protocol.py b/packages/language_server/src/robotcode/language_server/common/protocol.py index 5407d1dd..04df6e7b 100644 --- a/packages/language_server/src/robotcode/language_server/common/protocol.py +++ b/packages/language_server/src/robotcode/language_server/common/protocol.py @@ -4,7 +4,7 @@ from threading import Event from typing import Any, ClassVar, Final, List, NamedTuple, Optional, Set, Union -from robotcode.core.concurrent import FutureEx +from robotcode.core.concurrent import Task from robotcode.core.event import event from robotcode.core.lsp.types import ( CancelParams, @@ -315,12 +315,12 @@ def _set_trace(self, value: TraceValues, *args: Any, **kwargs: Any) -> None: def _cancel_request(self, id: Union[int, str], **kwargs: Any) -> None: self.cancel_request(id) - def register_capability(self, id: str, method: str, register_options: Optional[Any]) -> FutureEx[None]: + def register_capability(self, id: str, method: str, register_options: Optional[Any]) -> Task[None]: return self.register_capabilities([Registration(id=id, method=method, register_options=register_options)]) - def register_capabilities(self, registrations: List[Registration]) -> FutureEx[None]: + def register_capabilities(self, registrations: List[Registration]) -> Task[None]: if not registrations: - result: FutureEx[None] = FutureEx() + result: Task[None] = Task() result.set_result(None) return result return self.send_request( @@ -328,12 +328,12 @@ def register_capabilities(self, registrations: List[Registration]) -> FutureEx[N RegistrationParams(registrations=registrations), ) - def unregister_capability(self, id: str, method: str) -> FutureEx[None]: + def unregister_capability(self, id: str, method: str) -> Task[None]: return self.unregister_capabilities([Unregistration(id=id, method=method)]) - def unregister_capabilities(self, unregisterations: List[Unregistration]) -> FutureEx[None]: + def unregister_capabilities(self, unregisterations: List[Unregistration]) -> Task[None]: if not unregisterations: - result: FutureEx[None] = FutureEx() + result: Task[None] = Task() result.set_result(None) return result return self.send_request( diff --git a/packages/language_server/src/robotcode/language_server/robotframework/diagnostics/imports_manager.py b/packages/language_server/src/robotcode/language_server/robotframework/diagnostics/imports_manager.py index ee160d75..2dff23c0 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/diagnostics/imports_manager.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/diagnostics/imports_manager.py @@ -24,7 +24,7 @@ final, ) -from robotcode.core.concurrent import run_in_thread +from robotcode.core.concurrent import run_as_task from robotcode.core.event import event from robotcode.core.lsp.types import DocumentUri, FileChangeType, FileEvent from robotcode.core.uri import Uri @@ -684,7 +684,7 @@ def _do_imports_changed(self, sender: Any, uri: DocumentUri) -> None: @language_id("robotframework") def resource_document_changed(self, sender: Any, document: TextDocument) -> None: - run_in_thread(self.__resource_document_changed, document) + run_as_task(self.__resource_document_changed, document) def __resource_document_changed(self, document: TextDocument) -> None: resource_changed: List[LibraryDoc] = [] diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/code_lens.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/code_lens.py index 9cd0eb37..7bee88a8 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/code_lens.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/code_lens.py @@ -1,7 +1,7 @@ import ast from typing import TYPE_CHECKING, Any, List, Optional, Set, Tuple, cast -from robotcode.core.concurrent import run_in_thread +from robotcode.core.concurrent import run_as_task from robotcode.core.lsp.types import CodeLens, Command from robotcode.core.utils.logging import LoggingDescriptor from robotcode.robot.diagnostics.library_doc import KeywordDoc @@ -85,7 +85,7 @@ def find_refs() -> None: key = (document, kw_doc) if key not in self._running_task: - task = run_in_thread(find_refs) + task = run_as_task(find_refs) def done(task: Any) -> None: if key in self._running_task: diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/document_highlight.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/document_highlight.py index e3028a22..aa8f99f2 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/document_highlight.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/document_highlight.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING, Any, List, Optional, cast -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.lsp.types import ( DocumentHighlight, DocumentHighlightKind, @@ -35,7 +35,7 @@ def collect(self, sender: Any, document: TextDocument, position: Position) -> Op all_variable_refs = namespace.get_variable_references() if all_variable_refs: for var, var_refs in all_variable_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() for r in var_refs: if (var.source == namespace.source and position in var.name_range) or position in r.range: @@ -56,7 +56,7 @@ def collect(self, sender: Any, document: TextDocument, position: Position) -> Op all_kw_refs = namespace.get_keyword_references() if all_kw_refs: for kw, kw_refs in all_kw_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() for r in kw_refs: if (kw.source == namespace.source and position in kw.range) or position in r.range: @@ -72,7 +72,7 @@ def collect(self, sender: Any, document: TextDocument, position: Position) -> Op all_namespace_refs = namespace.get_namespace_references() if all_namespace_refs: for ns, ns_refs in all_namespace_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() found_range = ( ns.import_range if ns.import_source == namespace.source diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/folding_range.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/folding_range.py index ca2fea37..71b91211 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/folding_range.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/folding_range.py @@ -5,7 +5,7 @@ from robot.parsing.model.blocks import If, Keyword, TestCase -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.lsp.types import FoldingRange from robotcode.core.utils.logging import LoggingDescriptor from robotcode.robot.utils.visitor import Visitor @@ -39,7 +39,7 @@ def __init__(self, parent: RobotFoldingRangeProtocolPart) -> None: self.current_if: List[ast.AST] = [] def visit(self, node: ast.AST) -> None: - check_current_thread_canceled() + check_current_task_canceled() super().visit(node) @classmethod diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/goto.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/goto.py index fa8ba5fc..169d7fc6 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/goto.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/goto.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, List, Optional, Union, cast -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.lsp.types import Location, LocationLink, Position, Range from robotcode.core.uri import Uri from robotcode.core.utils.logging import LoggingDescriptor @@ -52,7 +52,7 @@ def collect( result = [] for variable, var_refs in all_variable_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() found_range = ( variable.name_range @@ -86,7 +86,7 @@ def collect( result = [] for kw, kw_refs in all_kw_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() found_range = ( kw.name_range @@ -115,7 +115,7 @@ def collect( all_namespace_refs = namespace.get_namespace_references() if all_namespace_refs: - check_current_thread_canceled() + check_current_task_canceled() result = [] diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/hover.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/hover.py index 1a263312..b86bee97 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/hover.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/hover.py @@ -16,7 +16,7 @@ from robot.parsing.model.blocks import TestCase, TestCaseSection from robot.parsing.model.statements import Documentation, Tags -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.lsp.types import ( Hover, MarkupContent, @@ -81,7 +81,7 @@ def collect(self, sender: Any, document: TextDocument, position: Position) -> Op return result for result_node in reversed(result_nodes): - check_current_thread_canceled() + check_current_task_canceled() method = self._find_method(type(result_node)) if method is not None: @@ -100,7 +100,7 @@ def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position: highlight_range = None for variable, var_refs in all_variable_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() found_range = ( variable.name_range @@ -154,7 +154,7 @@ def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position: result: List[Tuple[Range, str]] = [] for kw, kw_refs in all_kw_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() found_range = ( kw.name_range @@ -182,7 +182,7 @@ def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position: all_namespace_refs = namespace.get_namespace_references() if all_namespace_refs: for ns, ns_refs in all_namespace_refs.items(): - check_current_thread_canceled() + check_current_task_canceled() found_range = ( ns.import_range diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/inlay_hint.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/inlay_hint.py index 164df406..78149028 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/inlay_hint.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/inlay_hint.py @@ -3,7 +3,7 @@ from robot.parsing.lexer.tokens import Token -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.lsp.types import InlayHint, InlayHintKind, Range from robotcode.core.utils.logging import LoggingDescriptor from robotcode.robot.diagnostics.library_doc import ( @@ -77,7 +77,7 @@ def collect(self, sender: Any, document: TextDocument, range: Range) -> Optional result: List[InlayHint] = [] for node in iter_nodes(model): - check_current_thread_canceled() + check_current_task_canceled() node_range = range_from_node(node) if node_range.end < range.start: diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py index f7e2610d..1e54deec 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py @@ -4,7 +4,7 @@ from robot.parsing.model.statements import Statement -from robotcode.core.concurrent import check_current_thread_canceled, threaded +from robotcode.core.concurrent import check_current_task_canceled, threaded from robotcode.core.event import event from robotcode.core.lsp.types import ( FileEvent, @@ -144,7 +144,7 @@ def _find_references_in_workspace( result: List[Location] = [] for doc in self.parent.documents.documents: - check_current_thread_canceled() + check_current_task_canceled() result.extend(func(doc, *args, **kwargs)) if result and stop_at_first: diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/semantic_tokens.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/semantic_tokens.py index 14ae205c..83001f84 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/semantic_tokens.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/semantic_tokens.py @@ -37,7 +37,7 @@ from robot.utils.escaping import split_from_equals, unescape from robot.variables.search import is_variable -from robotcode.core.concurrent import check_current_thread_canceled +from robotcode.core.concurrent import check_current_task_canceled from robotcode.core.lsp.types import ( Position, Range, @@ -974,7 +974,7 @@ def _collect_internal( def get_tokens() -> Iterator[Tuple[Token, ast.AST]]: for node in iter_nodes(model): - check_current_thread_canceled() + check_current_task_canceled() if isinstance(node, Statement): if isinstance(node, LibraryImport) and node.name: