Skip to content

Commit 41f495b

Browse files
committed
refactor(langserver,jsonrpc): use concurrent.futures.Future to send request, make register_capabilities syncronous
1 parent a399bd6 commit 41f495b

File tree

29 files changed

+357
-280
lines changed

29 files changed

+357
-280
lines changed

.vscode/launch.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@
112112
//"tests/robotcode/language_server/robotframework/parts/test_references.py"
113113
//"./tests/robotcode/language_server/robotframework/parts/test_discovering.py::test_workspace_discovery"
114114
//"tests/robotcode/language_server/robotframework/parts/test_document_highlight.py"
115-
"tests/robotcode/utils/test_dataclasses.py::test_really_complex_data"
115+
//"tests/robotcode/utils/test_dataclasses.py::test_really_complex_data"
116+
"tests/robotcode/language_server/robotframework/parts/test_foldingrange.py"
116117
],
117118
"console": "integratedTerminal",
118119
"justMyCode": false,

hatch.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ only-include = ["src", "CHANGELOG.md"]
1616
dependencies = [
1717
"pytest",
1818
"pytest-html",
19-
"pytest_asyncio",
19+
"pytest_asyncio>=0.21,<0.23",
2020
# "pytest-regtest>=1.5.0",
2121
"pytest-cov",
2222
"mypy",

package-lock.json

Lines changed: 71 additions & 71 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,20 +1327,20 @@
13271327
"devDependencies": {
13281328
"@types/node": "^18.15.11",
13291329
"@types/vscode": "^1.82.0",
1330-
"@typescript-eslint/eslint-plugin": "^6.12.0",
1331-
"@typescript-eslint/parser": "^6.12.0",
1330+
"@typescript-eslint/eslint-plugin": "^6.14.0",
1331+
"@typescript-eslint/parser": "^6.14.0",
13321332
"@vscode/test-electron": "^2.3.8",
13331333
"@vscode/vsce": "^2.22.0",
1334-
"eslint": "^8.54.0",
1335-
"eslint-config-prettier": "^9.0.0",
1334+
"eslint": "^8.55.0",
1335+
"eslint-config-prettier": "^9.1.0",
13361336
"eslint-plugin-import": "^2.29.0",
13371337
"eslint-plugin-jsx-a11y": "^6.8.0",
13381338
"eslint-plugin-node": "^11.1.0",
13391339
"eslint-plugin-prettier": "^5.0.1",
13401340
"ovsx": "^0.8.3",
1341-
"prettier": "^3.1.0",
1341+
"prettier": "^3.1.1",
13421342
"ts-loader": "^9.5.1",
1343-
"typescript": "^5.3.2",
1343+
"typescript": "^5.3.3",
13441344
"webpack": "^5.89.0",
13451345
"webpack-cli": "^5.1.4"
13461346
}

packages/core/src/robotcode/core/event.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,31 @@ def __init__(self, _func: Callable[_TParams, _TResult]) -> None:
125125
class event(EventDescriptorBase[_TParams, _TResult, Event[_TParams, _TResult]]): # noqa: N801
126126
def __init__(self, _func: Callable[_TParams, _TResult]) -> None:
127127
super().__init__(_func, Event[_TParams, _TResult])
128+
129+
130+
class ThreadedEventResultIteratorBase(EventResultIteratorBase[_TParams, _TResult]):
131+
def _notify(self, *__args: _TParams.args, **__kwargs: _TParams.kwargs) -> Iterator[_TResult]:
132+
for method in set(self):
133+
yield method(*__args, **__kwargs)
134+
135+
136+
class ThreadedEventIterator(ThreadedEventResultIteratorBase[_TParams, _TResult]):
137+
def __call__(self, *__args: _TParams.args, **__kwargs: _TParams.kwargs) -> Iterator[_TResult]:
138+
return self._notify(*__args, **__kwargs)
139+
140+
141+
class ThreadedEvent(ThreadedEventResultIteratorBase[_TParams, _TResult]):
142+
def __call__(self, *__args: _TParams.args, **__kwargs: _TParams.kwargs) -> List[_TResult]:
143+
return list(self._notify(*__args, **__kwargs))
144+
145+
146+
class threaded_event_iterator( # noqa: N801
147+
EventDescriptorBase[_TParams, _TResult, ThreadedEventIterator[_TParams, _TResult]]
148+
):
149+
def __init__(self, _func: Callable[_TParams, _TResult]) -> None:
150+
super().__init__(_func, ThreadedEventIterator[_TParams, _TResult])
151+
152+
153+
class threaded_event(EventDescriptorBase[_TParams, _TResult, ThreadedEvent[_TParams, _TResult]]): # noqa: N801
154+
def __init__(self, _func: Callable[_TParams, _TResult]) -> None:
155+
super().__init__(_func, ThreadedEvent[_TParams, _TResult])

packages/jsonrpc2/src/robotcode/jsonrpc2/protocol.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -553,10 +553,10 @@ def send_request(
553553

554554
self._sended_request[id] = SendedRequestEntry(result, return_type_or_converter)
555555

556-
request = JsonRPCRequest(id=id, method=method, params=params)
557-
self.send_message(request)
556+
request = JsonRPCRequest(id=id, method=method, params=params)
557+
self.send_message(request)
558558

559-
return result
559+
return result
560560

561561
def send_request_async(
562562
self,

0 commit comments

Comments
 (0)