code-analysis-client 1.6.260__tar.gz → 1.6.262__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/PKG-INFO +1 -1
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/__init__.py +2 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/client.py +36 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/exceptions.py +2 -2
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/queue_wait.py +2 -2
- code_analysis_client-1.6.262/code_analysis_client/symbol_tree.py +13 -0
- code_analysis_client-1.6.262/code_analysis_client/version.txt +1 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client.egg-info/PKG-INFO +1 -1
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client.egg-info/SOURCES.txt +1 -0
- code_analysis_client-1.6.260/code_analysis_client/version.txt +0 -1
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/README.md +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/check_chain.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/commands_proxy.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/config.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/file_session.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/py.typed +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/responses.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/schema_disk_cache.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/server_api.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/server_schema.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/universal_file.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/validation.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/vectorizer_state.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/worktree.py +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client.egg-info/dependency_links.txt +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client.egg-info/requires.txt +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client.egg-info/top_level.txt +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/pyproject.toml +0 -0
- {code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-analysis-client
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.262
|
|
4
4
|
Summary: Async JSON-RPC client for the code-analysis MCP server (mcp-proxy-adapter JsonRpcClient)
|
|
5
5
|
Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
|
|
6
6
|
Requires-Python: >=3.10
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/__init__.py
RENAMED
|
@@ -10,6 +10,7 @@ from __future__ import annotations
|
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
|
|
12
12
|
from code_analysis_client.client import CodeAnalysisAsyncClient
|
|
13
|
+
from code_analysis_client.symbol_tree import SymbolTreeNode
|
|
13
14
|
from code_analysis_client.commands_proxy import ValidatedCommandsProxy
|
|
14
15
|
from code_analysis_client.config import (
|
|
15
16
|
DEFAULT_CLIENT_ADAPTER_CONFIG,
|
|
@@ -76,6 +77,7 @@ __all__ = [
|
|
|
76
77
|
"CST_REMOVED_COMMANDS",
|
|
77
78
|
"ClientValidationError",
|
|
78
79
|
"CodeAnalysisAsyncClient",
|
|
80
|
+
"SymbolTreeNode",
|
|
79
81
|
"CommandFailedError",
|
|
80
82
|
"FILE_SESSION_COMMANDS",
|
|
81
83
|
"FILE_SESSION_FACADE_METHODS",
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/client.py
RENAMED
|
@@ -49,11 +49,14 @@ from code_analysis_client.schema_disk_cache import (
|
|
|
49
49
|
)
|
|
50
50
|
from code_analysis_client.server_schema import fetch_command_schema_from_server
|
|
51
51
|
from code_analysis_client.exceptions import ClientValidationError
|
|
52
|
+
from code_analysis_client.symbol_tree import SymbolTreeNode
|
|
52
53
|
from code_analysis_client.validation import (
|
|
53
54
|
prepare_params_for_schema,
|
|
54
55
|
validate_params_against_schema,
|
|
55
56
|
)
|
|
56
57
|
|
|
58
|
+
_SYMBOL_TREE_OMITTED: Any = object()
|
|
59
|
+
|
|
57
60
|
|
|
58
61
|
def _remote_invalid_params_as_client_validation(
|
|
59
62
|
error: ClientRemoteResponseError,
|
|
@@ -182,6 +185,39 @@ class CodeAnalysisAsyncClient:
|
|
|
182
185
|
self._command_schema_cache.clear()
|
|
183
186
|
clear_cached_schemas(self._rpc.base_url)
|
|
184
187
|
|
|
188
|
+
async def symbol_tree(
|
|
189
|
+
self,
|
|
190
|
+
*,
|
|
191
|
+
project_id: str,
|
|
192
|
+
file_path: str | None = _SYMBOL_TREE_OMITTED,
|
|
193
|
+
source: str | None = _SYMBOL_TREE_OMITTED,
|
|
194
|
+
source_name: str | None = _SYMBOL_TREE_OMITTED,
|
|
195
|
+
worktree_name: str | None = _SYMBOL_TREE_OMITTED,
|
|
196
|
+
options: dict[str, object] | None = _SYMBOL_TREE_OMITTED,
|
|
197
|
+
) -> list[SymbolTreeNode]:
|
|
198
|
+
"""Read declarations without saving raw source or changing project state.
|
|
199
|
+
|
|
200
|
+
Select exactly one of ``file_path`` and ``source``. Raw source requires
|
|
201
|
+
``source_name``; its extension selects the plugin. Domain failures retain
|
|
202
|
+
the normal ``CommandFailedError`` result; validation uses
|
|
203
|
+
``ClientValidationError``.
|
|
204
|
+
"""
|
|
205
|
+
params: dict[str, Any] = {"project_id": project_id}
|
|
206
|
+
for key, value in (
|
|
207
|
+
("file_path", file_path),
|
|
208
|
+
("source", source),
|
|
209
|
+
("source_name", source_name),
|
|
210
|
+
("worktree_name", worktree_name),
|
|
211
|
+
("options", options),
|
|
212
|
+
):
|
|
213
|
+
if value is not _SYMBOL_TREE_OMITTED:
|
|
214
|
+
params[key] = value
|
|
215
|
+
result = await self.call("symbol_tree", params)
|
|
216
|
+
data = result.get("data")
|
|
217
|
+
if not isinstance(data, list):
|
|
218
|
+
raise RuntimeError("symbol_tree returned a non-list result")
|
|
219
|
+
return data
|
|
220
|
+
|
|
185
221
|
@property
|
|
186
222
|
def file_sessions(self) -> FileSessionClient:
|
|
187
223
|
"""Session workflow: ``session_*``, ``subordinate_session_*``, transfer, advisory locks."""
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/exceptions.py
RENAMED
|
@@ -20,7 +20,7 @@ class ClientValidationError(ValueError):
|
|
|
20
20
|
``SESSION_OPEN_IN_EDITOR``) and ``details`` is the server's error details object.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
code = "VALIDATION_ERROR"
|
|
23
|
+
code: str | int = "VALIDATION_ERROR"
|
|
24
24
|
|
|
25
25
|
def __init__(
|
|
26
26
|
self,
|
|
@@ -28,7 +28,7 @@ class ClientValidationError(ValueError):
|
|
|
28
28
|
*,
|
|
29
29
|
field: Optional[str] = None,
|
|
30
30
|
details: Optional[Dict[str, Any]] = None,
|
|
31
|
-
code:
|
|
31
|
+
code: str | int | None = None,
|
|
32
32
|
) -> None:
|
|
33
33
|
"""Initialize with optional field, details payload and the server error code."""
|
|
34
34
|
super().__init__(message)
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/queue_wait.py
RENAMED
|
@@ -97,7 +97,7 @@ def remote_error_text(message: Any, code: Any) -> str:
|
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
def invalid_params_error(
|
|
100
|
-
message: str, data: Any, *, code:
|
|
100
|
+
message: str, data: Any, *, code: str | int = -32602
|
|
101
101
|
) -> ClientValidationError:
|
|
102
102
|
"""Build the :class:`ClientValidationError` for a server refusal of a command's parameters.
|
|
103
103
|
|
|
@@ -105,7 +105,7 @@ def invalid_params_error(
|
|
|
105
105
|
failed job (``job_failure``) and a refused command-session open with the server's own error
|
|
106
106
|
code (``map_adapter_error``), so ``code`` / ``field`` / ``details`` have one shape: ``details``
|
|
107
107
|
is the server's error ``data`` object, ``field`` its ``field`` entry (else ``"command"``),
|
|
108
|
-
``code`` ``
|
|
108
|
+
``code`` retains JSON-RPC ``-32602`` unless the server named its own code.
|
|
109
109
|
"""
|
|
110
110
|
payload = data if isinstance(data, dict) else {}
|
|
111
111
|
field = payload.get("field")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""The uniform recursive declaration-tree result."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TypedDict
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SymbolTreeNode(TypedDict):
|
|
9
|
+
"""One declaration; kinds belong to language plugins."""
|
|
10
|
+
|
|
11
|
+
name: str
|
|
12
|
+
kind: str
|
|
13
|
+
children: list[SymbolTreeNode]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.6.262
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-analysis-client
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.262
|
|
4
4
|
Summary: Async JSON-RPC client for the code-analysis MCP server (mcp-proxy-adapter JsonRpcClient)
|
|
5
5
|
Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -13,6 +13,7 @@ code_analysis_client/responses.py
|
|
|
13
13
|
code_analysis_client/schema_disk_cache.py
|
|
14
14
|
code_analysis_client/server_api.py
|
|
15
15
|
code_analysis_client/server_schema.py
|
|
16
|
+
code_analysis_client/symbol_tree.py
|
|
16
17
|
code_analysis_client/universal_file.py
|
|
17
18
|
code_analysis_client/validation.py
|
|
18
19
|
code_analysis_client/vectorizer_state.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.6.260
|
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/check_chain.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/commands_proxy.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/config.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/file_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/responses.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/server_api.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/server_schema.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/universal_file.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.260 → code_analysis_client-1.6.262}/code_analysis_client/worktree.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|