Skip to content

Commit dfd3a91

Browse files
authored
refactor(types): Type parameters and return value of Request (#2741)
1 parent 27ce0fc commit dfd3a91

17 files changed

+301
-186
lines changed

plugin/code_actions.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22
from ..protocol import CodeAction
33
from ..protocol import CodeActionKind
4+
from ..protocol import CodeActionParams
45
from ..protocol import Command
56
from ..protocol import Diagnostic
67
from .core.promise import Promise
@@ -82,7 +83,7 @@ def request_for_region_async(
8283
self.refactor_actions_cache.clear()
8384
self.source_actions_cache.clear()
8485

85-
def request_factory(sb: SessionBufferProtocol) -> Request | None:
86+
def request_factory(sb: SessionBufferProtocol) -> Request[CodeActionParams, list[CodeActionOrCommand] | None]:
8687
diagnostics: list[Diagnostic] = []
8788
for diag_sb, diags in session_buffer_diagnostics:
8889
if diag_sb == sb:
@@ -125,15 +126,15 @@ def response_filter(sb: SessionBufferProtocol, actions: list[CodeActionOrCommand
125126
def _collect_code_actions_async(
126127
self,
127128
listener: AbstractViewListener,
128-
request_factory: Callable[[SessionBufferProtocol], Request | None],
129+
request_factory: Callable[[SessionBufferProtocol], Request[CodeActionParams, list[CodeActionOrCommand] | None] | None], # noqa: E501
129130
response_filter: Callable[[SessionBufferProtocol, list[CodeActionOrCommand]], list[CodeActionOrCommand]],
130131
) -> Promise[list[CodeActionsByConfigName]]:
131132

132133
def on_response(
133134
sb: SessionBufferProtocol, response: Error | list[CodeActionOrCommand] | None
134135
) -> CodeActionsByConfigName:
135136
actions = []
136-
if response and not isinstance(response, Error) and response_filter:
137+
if response and not isinstance(response, Error):
137138
actions = response_filter(sb, response)
138139
return (sb.session.config.name, actions)
139140

@@ -145,7 +146,7 @@ def on_response(
145146
listener.purge_changes_async()
146147
sb.do_document_diagnostic_async(listener.view, listener.view.change_count())
147148
response_handler = partial(on_response, sb)
148-
task: Promise[list[CodeActionOrCommand] | None | Error] = session.send_request_task(request)
149+
task = session.send_request_task(request)
149150
tasks.append(task.then(response_handler))
150151
# Return only results for non-empty lists.
151152
return Promise.all(tasks) \
@@ -259,7 +260,7 @@ def _handle_response_async(
259260
if self._cancelled:
260261
return
261262
view = self._task_runner.view
262-
tasks: list[Promise] = []
263+
tasks: list[Promise[None]] = []
263264
config_name, code_actions = response
264265
session = self._task_runner.session_by_name(config_name, 'codeActionProvider')
265266
if session and code_actions:

plugin/completion.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
import webbrowser
3737

3838
SessionName: TypeAlias = str
39-
CompletionResponse: TypeAlias = Union[List[CompletionItem], CompletionList, None]
40-
ResolvedCompletions: TypeAlias = Tuple[Union[CompletionResponse, Error], 'weakref.ref[Session]']
39+
CompletionResponse: TypeAlias = Union[List[CompletionItem], CompletionList, None, Error]
40+
ResolvedCompletions: TypeAlias = Tuple[CompletionResponse, 'weakref.ref[Session]']
4141
CompletionsStore: TypeAlias = Tuple[List[CompletionItem], CompletionItemDefaults]
4242

4343

@@ -203,7 +203,7 @@ def _create_completion_request_async(self, session: Session) -> Promise[Resolved
203203
return promise.then(lambda response: self._on_completion_response_async(response, request_id, weak_session))
204204

205205
def _on_completion_response_async(
206-
self, response: CompletionResponse | Error, request_id: int, weak_session: weakref.ref[Session]
206+
self, response: CompletionResponse, request_id: int, weak_session: weakref.ref[Session]
207207
) -> ResolvedCompletions:
208208
self._pending_completion_requests.pop(request_id, None)
209209
return (response, weak_session)

plugin/core/active_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class ActiveRequest:
1414
Holds state per request.
1515
"""
1616

17-
def __init__(self, sv: SessionViewProtocol, request_id: int, request: Request) -> None:
17+
def __init__(self, sv: SessionViewProtocol, request_id: int, request: Request[Any, Any]) -> None:
1818
# sv is the parent object; there is no need to keep it alive explicitly.
1919
self.weaksv = ref(sv)
2020
self.request_id = request_id

0 commit comments

Comments
 (0)